最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

淺談Python訪問MySQL的正確姿勢(shì)

 更新時(shí)間:2020年01月07日 14:06:22   作者:天元浪子  
這篇文章主要介紹了淺談Python訪問MySQL的正確姿勢(shì),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

Py2 時(shí)代,訪問 MySQL 數(shù)據(jù)庫的模塊除了 PyMySQL 和 MySQL-python 之外,還有以速度見長(zhǎng)的 Umysql,以及非常小眾的 Oursql 模塊。進(jìn)入了 Py3 時(shí)代之后,PyMySQL 與時(shí)俱進(jìn),順利升級(jí)到 Py3 版本, MySQL-python 則被它的一個(gè) Py3 分支——mysqlclient 取代,而 Umysql 和 Oursql 則停留在了屬于它們的那個(gè)時(shí)代。

下表給出了 PyMySQL 模塊和 mysqlclient 模塊在安裝方式、導(dǎo)入方式、支持的Python版本和數(shù)據(jù)庫版本等方面的比較。因?yàn)槿鄙倏尚诺馁Y料,這里沒有對(duì)兩個(gè)模塊的性能做出比較。不過,PyMySQL 明確聲明支持最新的 MySQL 和 MariaDB,而 mysqlclient 關(guān)于數(shù)據(jù)庫版本支持的描述顯得模棱兩可、似是而非,所以很多人也許會(huì)把 PyMySQL 作為首選。但從我們的實(shí)際應(yīng)用來看,mysqlclient 并沒有受到過數(shù)據(jù)庫版本的限制。我更愿意把版本支持的表述解讀為兩個(gè)開發(fā)團(tuán)隊(duì)風(fēng)格不同所致。

PyMySQL mysqlclient
安裝方式 pip install PyMySQL pip install mysqlclient
導(dǎo)入方式 import pymysql import MySQLdb
Python版本 2.7 and >= 3.4 2.7 and >= 3.4
數(shù)據(jù)庫版本 MySQL >= 5.5
MariaDB >= 5.5
MySQL versions from 3.23 to 5.5;
5.0 or newer recommended.
MariaDB should also work.

有趣的是,不管是 PyMySQL,還是 MySQL-python,或者后來取而代之的 mysqlclient,它們?cè)谟梅ㄉ蠋缀跬耆恢拢憾际腔?Python database API version 2.0,這個(gè)標(biāo)準(zhǔn)也被稱作 PEP-0249。這意味著,我們不用修改代碼,就可以更換數(shù)據(jù)庫客戶端。下面的應(yīng)用實(shí)例證明了這一點(diǎn):除了模塊名字不一樣,其余代碼完全一致。

姿勢(shì)1:以元組形式返回查詢記錄

我們以 PyMySQL 模塊為例,先來看看最常見的用法:以元組形式返回查詢記錄。如果把代碼中的 pymysql 改為 MySQLdb,可以輕松切換成 mysqlclient 模塊。

>>> import pymysql
>>> db = pymysql.connect(
  host = 'localhost',
  user = 'xufive',
  password = '********',
  db = 'demo',
  charset = 'utf8'
)
>>> cursor = db.cursor()
>>> cursor.execute('select * from member where id = %s', (100,))
1
>>> print(cursor.fetchall())
((100, '370103********0012', '*9EE8E3304D69C3E9260F19C224EA5852129BF030', '王茁洋', '男', datetime.date(****, **, **), '', '濟(jì)南', '濟(jì)南泉景小學(xué)', '186********', Decimal('1812.50')),)
>>> cursor.close()
>>> db.close()

姿勢(shì)2:以字典形式返回查詢記錄

查詢結(jié)果以元組形式返回,有很多不便,我們需要知道元組各元素對(duì)應(yīng)的是表結(jié)構(gòu)中的哪一個(gè)字段(列)。下面的代碼,實(shí)現(xiàn)了以字典形式返回查詢記錄。同樣的,如果把代碼中的 MySQLdb 改為 pymysql,可以輕松切換成 PyMySQL 模塊。

>>> import MySQLdb.cursors
>>> db = MySQLdb.connect(
  host = 'localhost',
  user = 'xufive',
  password = '********',
  db = 'demo', 
  charset = 'utf8',
  cursorclass = MySQLdb.cursors.DictCursor
)
>>> with db.cursor() as cursor:
  sql = 'select * from member where id = %s'
  cursor.execute(sql, (100,))
  print(cursor.fetchall())
 1
({'id': 100, 'idcard': '370103********0012', 'passwd': '*9EE8E3304D69C3E9260F19C224EA5852129BF030', 'name': '王茁洋', 'sex': '男', 'birthday': datetime.date(****, **, **), 'title': '', 'address': '濟(jì)南', 'club': '濟(jì)南泉景小學(xué)', 'phone': '186********', 'rating': Decimal('1812.50')},)

姿勢(shì)3:事務(wù)回滾

事務(wù)是關(guān)系型數(shù)據(jù)庫的重要特性,NoSQL數(shù)據(jù)庫、分布式數(shù)據(jù)庫通常會(huì)淡化、甚至放棄事務(wù)。所謂事務(wù)是將一組DML(insert、update、delete)語句組合在一起形成一個(gè)邏輯單元,這些操作要么全部執(zhí)行成功提交(commit),如果不成功就要回退到事務(wù)開始之前的狀態(tài)(rollback),以確保不會(huì)停留在錯(cuò)誤的中間狀態(tài)。下面的代碼演示了 MySQL 典型的事務(wù)回滾應(yīng)用。

>>> import pymysql
>>> db = pymysql.connect(
  host = 'localhost',
  user = 'xufive',
  password = '********',
  db = 'demo',
  charset = 'utf8'
)

def transaction(db):
  try:
    db.begin()
    # 此處加入出錯(cuò)之后需要回滾的DML(insert、update、delete)語句
    db.commit()
    return True
  except:
    db.rollback()
    return False  

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python如何使用Scapy實(shí)現(xiàn)端口探測(cè)

    Python如何使用Scapy實(shí)現(xiàn)端口探測(cè)

    Scapy 是一款使用純Python編寫的跨平臺(tái)網(wǎng)絡(luò)數(shù)據(jù)包操控工具,它能夠處理和嗅探各種網(wǎng)絡(luò)數(shù)據(jù)包,本文主要介紹了Python如何使用使用Scapy實(shí)現(xiàn)端口探測(cè),有需要的可以參考下
    2023-10-10
  • Python計(jì)算指定日期是今年的第幾天(三種方法)

    Python計(jì)算指定日期是今年的第幾天(三種方法)

    這篇文章主要介紹了Python三種方法計(jì)算指定日期是今年的第幾天,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-03-03
  • python編程matplotlib交互繪制Julia集示例解析

    python編程matplotlib交互繪制Julia集示例解析

    matplotlib的Show面板中提供了放大、移動(dòng)等交互式操作,但也未能涵蓋所有的交互需求,比如希望通過mandelbrot集上的一點(diǎn)來生成對(duì)應(yīng)的Julia集
    2021-10-10
  • opencv 分類白天與夜景視頻的方法

    opencv 分類白天與夜景視頻的方法

    最近有個(gè)數(shù)據(jù)需要分類處理,是一批含有白天跟夜晚的視頻數(shù)據(jù),需要進(jìn)行區(qū)分開來,本文就來實(shí)現(xiàn),感興趣的可以了解一下
    2021-06-06
  • Python摸魚神器之利用樹莓派opencv人臉識(shí)別自動(dòng)控制電腦顯示桌面

    Python摸魚神器之利用樹莓派opencv人臉識(shí)別自動(dòng)控制電腦顯示桌面

    這篇文章主要介紹了Python摸魚神器樹莓派opencv人臉識(shí)別自動(dòng)控制電腦顯示桌面,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-09-09
  • Python實(shí)戰(zhàn)爬蟲之女友欲買文胸不知何色更美

    Python實(shí)戰(zhàn)爬蟲之女友欲買文胸不知何色更美

    實(shí)踐來源于理論,做爬蟲前肯定要先了解相關(guān)的規(guī)則和原理,網(wǎng)絡(luò)爬蟲又稱為網(wǎng)頁蜘蛛,網(wǎng)絡(luò)機(jī)器人,更經(jīng)常的稱為網(wǎng)頁追逐者,是一種按照一定的規(guī)則,自動(dòng)地抓取萬維網(wǎng)信息的程序或者腳本。一句話概括就是網(wǎng)上信息搬運(yùn)工。本篇文章帶你深入了解,需要的朋友可以參考下
    2021-09-09
  • virtualenv實(shí)現(xiàn)多個(gè)版本Python共存

    virtualenv實(shí)現(xiàn)多個(gè)版本Python共存

    virtualenv用于創(chuàng)建獨(dú)立的Python環(huán)境,多個(gè)Python相互獨(dú)立,互不影響,它能夠:1. 在沒有權(quán)限的情況下安裝新套件 2. 不同應(yīng)用可以使用不同的套件版本 3. 套件升級(jí)不影響其他應(yīng)用
    2017-08-08
  • Python用dilb提取照片上人臉的示例

    Python用dilb提取照片上人臉的示例

    這篇文章主要介紹了Python用dilb提取照片上人臉的示例,幫助大家更好的利用python處理人像,感興趣的朋友可以了解下
    2020-10-10
  • Numpy中的repeat函數(shù)使用

    Numpy中的repeat函數(shù)使用

    Numpy是Python強(qiáng)大的數(shù)學(xué)計(jì)算庫,和Scipy一起構(gòu)建起Python科學(xué)計(jì)算生態(tài),在本節(jié)下面我們重點(diǎn)介紹下repeat函數(shù)的用法,需要的朋友可以參考下
    2022-11-11
  • 淺析Python+OpenCV使用攝像頭追蹤人臉面部血液變化實(shí)現(xiàn)脈搏評(píng)估

    淺析Python+OpenCV使用攝像頭追蹤人臉面部血液變化實(shí)現(xiàn)脈搏評(píng)估

    這篇文章主要介紹了Python+OpenCV使用攝像頭追蹤人臉面部血液變化實(shí)現(xiàn)脈搏評(píng)估,本文通過一段代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-10-10

最新評(píng)論

文昌市| 香港 | 喀什市| 马山县| 荥经县| 邵东县| 锡林浩特市| 长宁县| 武平县| 青神县| 六安市| 新化县| 娱乐| 崇州市| 辉南县| 禹城市| 岳普湖县| 额济纳旗| 定兴县| 湘潭县| 利川市| 杭锦后旗| 德兴市| 巴彦淖尔市| 吉木乃县| 睢宁县| 柘城县| 金乡县| 沙坪坝区| 汤阴县| 清丰县| 民丰县| 鄂尔多斯市| 舒城县| 和龙市| 马龙县| 夏邑县| 麟游县| 清涧县| 岑溪市| 松溪县|