這期內容當中小編將會給大家帶來有關Python基于pymysql的數據庫操作類的安裝運行過程,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業的熱愛。我們立志把好的技術通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領域值得信任、有價值的長期合作伙伴,公司提供的服務項目有:空間域名、網頁空間、營銷軟件、網站建設、黎城網站維護、網站推廣。一 簡介
Python和MySQL交互的模塊有 MySQLdb 和 PyMySQL(pymysql),MySQLdb是基于C 語言編寫的,而且Python3 不在支持MySQLdb 。PyMySQL是一個純Python寫的MySQL客戶端,它的目標是替代MySQLdb,可以在CPython、PyPy、IronPython和Jython環境下運行,PyMySQL在MIT許可下發布。
在開發基于Python語言的項目中,為了以后系統能兼容Python3,我們使用了PyMySQL替換了MySQLdb。下面我們來熟悉一下pymysql的使用。
二 安裝方式
pymsql的源碼 /tupian/20230522/PyMySQL ,目前還在持續更新。
安裝要求:
Python -- one of the following:
CPython >= 2.6 or >= 3.3
PyPy >= 4.0
IronPython 2.7
MySQL Server -- one of the following:
MySQL >= 4.1 (tested with only 5.5~)
MariaDB >= 5.1
安裝
pip install PyMySQL
三 基于pymysql的數據庫交互
#!/usr/bin/env python
# encoding: utf-8
"""
author: yangyi@youzan
time: 2015/6/8 上午11:34
func: 基于pymysql的數據庫交互類,支持事務提交和回滾,返回結果記錄行數,和insert的最新id
"""
import pymysql
from warnings import filterwarnings
filterwarnings('ignore', category=pymysql.Warning)
CONNECT_TIMEOUT = 100
IP = 'localhost'
PORT = 3306
USER = 'root'
PASSSWORD = ''
class QueryException(Exception):
"""
"""
class ConnectionException(Exception):
"""
"""
class MySQL_Utils():
def __init__(
self, ip=IP, port=PORT, user=USER, password=PASSSWORD,
connect_timeout=CONNECT_TIMEOUT, remote=False, socket='', dbname='test'):
self.__conn = None
self.__cursor = None
self.lastrowid = None
self.connect_timeout = connect_timeout
self.ip = ip
self.port = port
self.user = user
self.password = password
self.mysocket = socket
self.remote = remote
self.db = dbname
self.rows_affected = 0
def __init_conn(self):
try:
conn = pymysql.connect(
host=self.ip,
port=int(self.port),
user=self.user,
db=self.db,
connect_timeout=self.connect_timeout,
charset='utf8', unix_socket=self.mysocket)
except pymysql.Error as e:
raise ConnectionException(e)
self.__conn = conn
def __init_cursor(self):
if self.__conn:
self.__cursor = self.__conn.cursor(pymysql.cursors.DictCursor)
def close(self):
if self.__conn:
self.__conn.close()
self.__conn = None
#專門處理select 語句
def exec_sql(self, sql, args=None):
try:
if self.__conn is None:
self.__init_conn()
self.__init_cursor()
self.__conn.autocommit = True
self.__cursor.execute(sql, args)
self.rows_affected = self.__cursor.rowcount
results = self.__cursor.fetchall()
return results
except pymysql.Error as e:
raise pymysql.Error(e)
finally:
if self.__conn:
self.close()
# 專門處理dml語句 delete,updete,insert
def exec_txsql(self, sql, args=None):
try:
if self.__conn is None:
self.__init_conn()
self.__init_cursor()
if self.__cursor is None:
self.__init_cursor()
self.rows_affected=self.__cursor.execute(sql, args)
self.lastrowid = self.__cursor.lastrowid
return self.rows_affected
except pymysql.Error as e:
raise pymysql.Error(e)
finally:
if self.__cursor:
self.__cursor.close()
self.__cursor = None
# 提交
def commit(self):
try:
if self.__conn:
self.__conn.commit()
except pymysql.Error as e:
raise pymysql.Error(e)
finally:
if self.__conn:
self.close()
#回滾操作
def rollback(self):
try:
if self.__conn:
self.__conn.rollback()
except pymysql.Error as e:
raise pymysql.Error(e)
finally:
if self.__conn:
self.close()
# 適用于需要獲取插入記錄的主鍵自增id
def get_lastrowid(self):
return self.lastrowid
#獲取dml操作影響的行數
def get_affectrows(self):
return self.rows_affected
#MySQL_Utils初始化的實例銷毀之后,自動提交
def __del__(self):
self.commit()
上述就是小編為大家分享的Python基于pymysql的數據庫操作類的安裝運行過程了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注創新互聯-成都網站建設公司行業資訊頻道。
本文名稱:Python基于pymysql的數據庫操作類的安裝運行過程-創新互聯
標題來源:http://vcdvsql.cn/article40/csgoeo.html
成都網站建設公司_創新互聯,為您提供網站建設、網站維護、商城網站、關鍵詞優化、服務器托管、全網營銷推廣
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯