亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Python > 正文

Python操作MySQL數據庫9個實用實例

2020-01-04 17:54:58
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了Python操作MySQL數據庫9個實用實例,需要的朋友可以參考下
 

在Windows平臺上安裝mysql模塊用于Python開發

用python連接mysql的時候,需要用的安裝版本,源碼版本容易有錯誤提示。下邊是打包了32與64版本。 
MySQL-python-1.2.3.win32-py2.7.exe 
MySQL-python-1.2.3.win-amd64-py2.7.exe

實例 1、取得 MYSQL 的版本

# -*- coding: UTF-8 -*-#安裝 MYSQL DB for pythonimport MySQLdb as mdbcon = Nonetry:  #連接 mysql 的方法: connect('ip','user','password','dbname')  con = mdb.connect('localhost', 'root','root', 'test');  #所有的查詢,都在連接 con 的一個模塊 cursor 上面運行的  cur = con.cursor()  #執行一個查詢  cur.execute("SELECT VERSION()")  #取得上個查詢的結果,是單個結果  data = cur.fetchone()  print "Database version : %s " % datafinally:  if con:    #無論如何,連接記得關閉    con.close()

實例 2、創建一個表并且插入數據

import MySQLdb as mdbimport sys#將 con 設定為全局連接con = mdb.connect('localhost', 'root', 'root', 'test');with con:#獲取連接的 cursor,只有獲取了 cursor,我們才能進行各種操作cur = con.cursor()#創建一個數據表 writers(id,name)cur.execute("CREATE TABLE IF NOT EXISTS /Writers(Id INT PRIMARY KEY AUTO_INCREMENT, Name VARCHAR(25))")#以下插入了 5 條數據cur.execute("INSERT INTO Writers(Name) VALUES('Jack London')")cur.execute("INSERT INTO Writers(Name) VALUES('Honore de Balzac')")cur.execute("INSERT INTO Writers(Name) VALUES('Lion Feuchtwanger')")cur.execute("INSERT INTO Writers(Name) VALUES('Emile Zola')")cur.execute("INSERT INTO Writers(Name) VALUES('Truman Capote')")

實例 3、 python 使用 slect 獲取 mysql 的數據并遍歷

import MySQLdb as mdbimport sys#連接 mysql,獲取連接的對象con = mdb.connect('localhost', 'root', 'root', 'test');with con:#仍然是,第一步要獲取連接的 cursor 對象,用于執行查詢cur = con.cursor()#類似于其他語言的 query 函數, execute 是 python 中的執行查詢函數cur.execute("SELECT * FROM Writers")#使用 fetchall 函數,將結果集(多維元組)存入 rows 里面rows = cur.fetchall()#依次遍歷結果集,發現每個元素,就是表中的一條記錄,用一個元組來顯示for row in rows:print row

運行結果:

(1L, ‘Jack London')
(2L, ‘Honore de Balzac')
(3L, ‘Lion Feuchtwanger')
(4L, ‘Emile Zola')
(5L, ‘Truman Capote')
上面的代碼,用來將所有的結果取出,不過打印的時候是每行一個元祖打印,現在我們使用方法,取出其中的單個數據:

import MySQLdb as mdbimport sys#獲取 mysql 的鏈接對象con = mdb.connect('localhost', 'root', 'root', 'test');with con:#獲取執行查詢的對象cur = con.cursor()#執行那個查詢,這里用的是 select 語句cur.execute("SELECT * FROM Writers")#使用 cur.rowcount 獲取結果集的條數numrows = int(cur.rowcount)#循環 numrows 次,每次取出一行數據for i in range(numrows):#每次取出一行,放到 row 中,這是一個元組(id,name)row = cur.fetchone()#直接輸出兩個元素print row[0], row[1]

運行結果:

1 Jack London
2 Honore de Balzac
3 Lion Feuchtwanger
4 Emile Zola
5 Truman Capote
實例 4、使用字典 cursor 取得結果集(可以使用表字段名字訪問值)

import MySQLdb as mdbimport sys#獲得 mysql 查詢的鏈接對象con = mdb.connect('localhost', 'root', 'root', 'test')with con:#獲取連接上的字典 cursor,注意獲取的方法,#每一個 cursor 其實都是 cursor 的子類cur = con.cursor(mdb.cursors.DictCursor)#執行語句不變cur.execute("SELECT * FROM Writers")#獲取數據方法不變rows = cur.fetchall()#遍歷數據也不變(比上一個更直接一點)for row in rows:#這里,可以使用鍵值對的方法,由鍵名字來獲取數據print "%s %s" % (row["Id"], row["Name"])

實例 5、獲取單個表的字段名和信息的方法

import MySQLdb as mdbimport sys#獲取數據庫的鏈接對象con = mdb.connect('localhost', 'root', 'root', 'test')with con:#獲取普通的查詢 cursorcur = con.cursor()cur.execute("SELECT * FROM Writers")rows = cur.fetchall()#獲取連接對象的描述信息desc = cur.descriptionprint 'cur.description:',desc#打印表頭,就是字段名字print "%s %3s" % (desc[0][0], desc[1][0])for row in rows:#打印結果print "%2s %3s" % row

運行結果:

cur.description: ((‘Id', 3, 1, 11, 11, 0, 0), (‘Name', 253, 17, 25, 25, 0, 1))
Id Name
1 Jack London
2 Honore de Balzac
3 Lion Feuchtwanger
4 Emile Zola
5 Truman Capote
實例 6、使用 Prepared statements 執行查詢(更安全方便)

import MySQLdb as mdbimport syscon = mdb.connect('localhost', 'root', 'root', 'test')with con:cur = con.cursor()#我們看到,這里可以通過寫一個可以組裝的 sql 語句來進行cur.execute("UPDATE Writers SET Name = %s WHERE Id = %s",("Guy de Maupasant", "4"))#使用 cur.rowcount 獲取影響了多少行print "Number of rows updated: %d" % cur.rowcount

結果:
Number of rows updated: 1

實例 7、把圖片用二進制存入 MYSQL

有人喜歡把圖片存入 MYSQL(這種做法貌似很少吧),我看大部分的程序,圖片都是存放在服務器上的文件,數據庫中存的只是圖片的地址而已,不過 MYSQL 是支持把圖片存入數據庫的,也相應的有一個專門的字段 BLOB (Binary Large Object),即較大的二進制對象字段,請看如下程序,注意測試圖片自己隨便找一個,地址要正確: 
首先,在數據庫中創建一個表,用于存放圖片:

 

復制代碼代碼如下:
CREATE TABLE Images(Id INT PRIMARY KEY AUTO_INCREMENT, Data MEDIUMBLOB);

 

然后運行如下 PYTHON 代碼進行:

 

import MySQLdb as mdbimport systry:#用讀文件模式打開圖片fin = open("../web.jpg")#將文本讀入 img 對象中img = fin.read()#關閉文件fin.close()except IOError, e:#如果出錯,打印錯誤信息print "Error %d: %s" % (e.args[0],e.args[1])sys.exit(1)try:#鏈接 mysql,獲取對象conn = mdb.connect(host='localhost',user='root',passwd='root',db='test')#獲取執行 cursorcursor = conn.cursor()#直接將數據作為字符串,插入數據庫cursor.execute("INSERT INTO Images SET Data='%s'" %mdb.escape_string(img))#提交數據conn.commit()#提交之后,再關閉 cursor 和鏈接cursor.close()conn.close()except mdb.Error, e:#若出現異常,打印信息print "Error %d: %s" % (e.args[0],e.args[1])sys.exit(1)

Python操作MySQL數據庫9個實用實例

實例 8、從數據庫中把圖片讀出來

import MySQLdb as mdbimport systry:#連接 mysql,獲取連接的對象conn = mdb.connect('localhost', 'root', 'root', 'test');cursor = conn.cursor()#執行查詢該圖片字段的 SQLcursor.execute("SELECT Data FROM Images LIMIT 1")#使用二進制寫文件的方法,打開一個圖片文件,若不存在則自動創建fout = open('image.png','wb')#直接將數據如文件fout.write(cursor.fetchone()[0])#關閉寫入的文件fout.close()#釋放查詢數據的資源cursor.close()conn.close()except IOError, e:#捕獲 IO 的異常 ,主要是文件寫入會發生錯誤print "Error %d: %s" % (e.args[0],e.args[1])sys.exit(1)

實例 9、使用 Transaction 即事務(手動提交,自動回滾)

import MySQLdb as mdbimport systry:#連接 mysql,獲取連接的對象conn = mdb.connect('localhost', 'root', 'root', 'test');cursor = conn.cursor()#如果某個數據庫支持事務,會自動開啟#這里用的是 MYSQL,所以會自動開啟事務(若是 MYISM 引擎則不會)cursor.execute("UPDATE Writers SET Name = %s WHERE Id = %s",("Leo Tolstoy", "1"))cursor.execute("UPDATE Writers SET Name = %s WHERE Id = %s",("Boris Pasternak", "2"))cursor.execute("UPDATE Writer SET Name = %s WHERE Id = %s",("Leonid Leonov", "3"))#事務的特性 1、原子性的手動提交conn.commit()cursor.close()conn.close()except mdb.Error, e:#如果出現了錯誤,那么可以回滾,就是上面的三條語句要么執行,要么都不執行conn.rollback()print "Error %d: %s" % (e.args[0],e.args[1])

結果: 
1、因為不存在 writer 表( SQL 第三條語句),所以出現錯誤:Error 1146: Table ‘test.writer' doesn't exist 
2、出現錯誤,出發異常處理, 3 條語句的前兩條會自動變成了沒有執行,結果不變 
3、如果本代碼放到一個 MyISAM 引擎表,前兩句會執行,第三句不會;如果是 INNDB 引擎,則都不會執行。

以上就是為大家分享的9個實用的Python操作MySQL數據庫實例,希望對大家的學習有所幫助。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
美女福利精品视频| 亚洲成人激情小说| 欧美三级免费观看| 91久久久亚洲精品| 亚洲天堂第二页| 欧美激情久久久久久| 国产精品美女久久久久av超清| 欧美疯狂性受xxxxx另类| 国产欧美久久久久久| 久久精品视频在线播放| 色小说视频一区| 欧美中文字幕在线播放| 国产成人鲁鲁免费视频a| 国产成人精品午夜| 在线观看中文字幕亚洲| 日韩成人中文字幕在线观看| 中文字幕日韩精品在线观看| 欧洲日本亚洲国产区| 九九热精品在线| 正在播放国产一区| 国模精品视频一区二区三区| 国产黑人绿帽在线第一区| 国产精品入口福利| 欧美一区三区三区高中清蜜桃| 欧美激情综合亚洲一二区| 久久久久久久久网站| 久久国产精品久久久久| 欧美日韩加勒比精品一区| 96精品久久久久中文字幕| 色伦专区97中文字幕| 日韩精品在线看| 91精品国产色综合久久不卡98| 日韩不卡中文字幕| 97视频免费在线看| 亚洲成人激情图| 久久69精品久久久久久久电影好| 国产欧美日韩视频| 日本精品久久久久影院| 日韩一区在线视频| 在线亚洲国产精品网| 亚洲欧洲一区二区三区久久| 亚洲国产欧美一区二区丝袜黑人| 黑人精品xxx一区| 亚洲午夜av电影| 伊人久久久久久久久久久久久| 欧美极品少妇xxxxⅹ喷水| 精品成人国产在线观看男人呻吟| 欧美性猛交xxxx黑人| 欧洲精品在线视频| 国产精品啪视频| 亚洲综合最新在线| 亚洲一区亚洲二区| 亚洲日韩中文字幕在线播放| 国产欧美日韩中文字幕| 国产主播欧美精品| 久久精品中文字幕一区| 亚洲老头同性xxxxx| 韩国一区二区电影| 日韩精品日韩在线观看| 亚洲精品视频免费在线观看| 国产99久久精品一区二区永久免费| 久热精品视频在线免费观看| 国产精品盗摄久久久| 国产午夜精品理论片a级探花| 2018中文字幕一区二区三区| 欧洲美女免费图片一区| 黄色成人av网| 自拍亚洲一区欧美另类| 午夜免费在线观看精品视频| 国产精品都在这里| 亚洲成人免费在线视频| 欧美国产视频一区二区| 欧美激情精品久久久久久变态| 欧美成人在线免费视频| 国产高清视频一区三区| 久久久久久国产免费| 久久精品99无色码中文字幕| 亚洲激情在线观看| 国产成人a亚洲精品| 久久久久久国产精品三级玉女聊斋| 亚洲专区中文字幕| 欧美久久久精品| 97色在线播放视频| 亚洲欧美福利视频| 91久久久久久国产精品| 国产精品成人av性教育| 亚洲美女精品成人在线视频| 久久久精品在线观看| 久久99国产精品自在自在app| 亚洲第一福利网站| 亚洲福利精品在线| 国产成人av网址| 91亚洲精品一区二区| 成人黄色av网| 亚洲一区二区三区在线视频| 国产97免费视| 日本高清+成人网在线观看| 亚洲国产中文字幕在线观看| 欧美性猛交xxxx乱大交3| 中文字幕国产精品久久| 亚洲欧美一区二区三区在线| 亚洲精品免费网站| 欧美高清第一页| 日韩免费在线看| 成人激情视频在线播放| 日韩黄在线观看| 91国偷自产一区二区三区的观看方式| 欧美成人免费视频| 亚洲欧美制服综合另类| 最新国产精品拍自在线播放| 国产亚洲精品久久久| 91免费精品国偷自产在线| 国产精品第一页在线| 亚洲精品日韩欧美| 亚洲精品影视在线观看| 91探花福利精品国产自产在线| 国产a∨精品一区二区三区不卡| 青青精品视频播放| 九九久久精品一区| 国内精品美女av在线播放| 色偷偷91综合久久噜噜| 亚洲精品久久久久中文字幕欢迎你| 亚洲成人av在线播放| 亚洲精品狠狠操| 国产欧美精品在线播放| 91高清免费在线观看| 一区二区三区日韩在线| 久久久久亚洲精品国产| 日本不卡高字幕在线2019| 国产91ⅴ在线精品免费观看| 国产一区二区在线免费视频| 午夜欧美大片免费观看| 日韩成人在线视频观看| 欧美性xxxxx极品| 亚洲视频电影图片偷拍一区| 亚洲香蕉成视频在线观看| 亚洲自拍中文字幕| 亚洲精品久久久久久久久| 国产精品视频在线观看| 91精品国产777在线观看| 日韩专区在线播放| 91av在线播放视频| 欧美黑人极品猛少妇色xxxxx| 一本色道久久88综合日韩精品| 日韩人在线观看| 亚洲成色www8888| 欧美成人免费在线观看| 国产97在线视频| 亚洲一区二区三区毛片| 国产一区玩具在线观看| 精品香蕉一区二区三区| 国产精品久久久久久久久影视| 日韩精品视频在线免费观看| 亚洲欧美日韩成人| 在线视频日韩精品| 亚洲国产欧美一区二区三区同亚洲| 中文字幕亚洲无线码a| 亚洲成年人在线| 欧美激情女人20p| 亚洲第一精品夜夜躁人人爽| 久久av在线看| 久久艳片www.17c.com| 亚洲a区在线视频| 国产日韩欧美视频在线|