久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

Python基于pymysql的數據庫操作類的安裝運行過程

170次閱讀
沒有評論

共計 3121 個字符,預計需要花費 8 分鐘才能閱讀完成。

這期內容當中丸趣 TV 小編將會給大家帶來有關 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 的源碼 https://github.com/PyMySQL/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()

上述就是丸趣 TV 小編為大家分享的 Python 基于 pymysql 的數據庫操作類的安裝運行過程了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注丸趣 TV 行業資訊頻道。

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-07-28發表,共計3121字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 卓资县| 本溪| 元朗区| 通江县| 抚远县| 清水河县| 南宁市| 绵阳市| 荣昌县| 鄂托克前旗| 金塔县| 上蔡县| 昌都县| 海门市| 汨罗市| 江城| 长宁区| 博罗县| 军事| 汾阳市| 蓬莱市| 永丰县| 韶关市| 汕头市| 深圳市| 闽侯县| 邵阳市| 遂平县| 梅州市| 泰顺县| 沂水县| 颍上县| 漳浦县| 绥芬河市| 丰都县| 双辽市| 剑川县| 霞浦县| 息烽县| 定南县| 民丰县|