日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

python读取mysql数据库_Python操作MySQL数据库9个实用实例

發布時間:2025/3/11 数据库 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python读取mysql数据库_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 python

import MySQLdb as mdb

con = None

try:

#連接 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 " % data

finally:

if con:

#無論如何,連接記得關閉

con.close()

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

import MySQLdb as mdb

import 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 mdb

import 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 mdb

import 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 mdb

import 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 mdb

import sys

#獲取數據庫的鏈接對象

con = mdb.connect('localhost', 'root', 'root', 'test')

with con:

#獲取普通的查詢 cursor

cur = con.cursor()

cur.execute("SELECT * FROM Writers")

rows = cur.fetchall()

#獲取連接對象的描述信息

desc = cur.description

print '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 mdb

import sys

con = 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 mdb

import sys

try:

#用讀文件模式打開圖片

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')

#獲取執行 cursor

cursor = 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)

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

import MySQLdb as mdb

import sys

try:

#連接 mysql,獲取連接的對象

conn = mdb.connect('localhost', 'root', 'root', 'test');

cursor = conn.cursor()

#執行查詢該圖片字段的 SQL

cursor.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 mdb

import sys

try:

#連接 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 引擎,則都不會執行。

更多關于python安裝教程的文章請參考《python各版本安裝教程》

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

總結

以上是生活随笔為你收集整理的python读取mysql数据库_Python操作MySQL数据库9个实用实例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 午夜福利视频一区二区 | 欧美一区二区三区在线观看 | 成人精品一区二区三区 | 成人av资源网 | 国产福利久久久 | 国产性猛交╳xxx乱大交 | 浮生影视在线观看免费 | 91操碰| 日韩狠狠 | 日日夜夜精品免费 | 男生桶女生肌肌 | 国产成人亚洲综合 | 免费毛片软件 | 日本网站在线看 | 美女扒开让男人桶爽 | 性v天堂 | 91黄版| 日韩在线视频中文字幕 | 欧美黑人粗大 | 成人片在线看 | 好男人影视www | 中文在线观看免费网站 | 亚洲自拍激情 | 欧美激情首页 | av看片资源 | 在线播放黄色网址 | 黄色三级小视频 | 无码黑人精品一区二区 | 性色av一区二区三区在线观看 | 伊人激情 | 日韩视频在线观看一区二区三区 | 伊人影院99| 涩涩视频免费在线观看 | 97涩涩网| 国产crm系统91在线 | 91成年版| 午夜精品久久久久 | 奇米婷婷| 欧美性猛交xxxx乱大交3 | av五月 | 欧美交换 | 欧美极品在线播放 | 久久久久免费精品 | jizz教师| 亚洲三级图片 | 黄色草逼网站 | 69精品视频| 国产极品美女高潮无套嗷嗷叫酒店 | 亚洲视频a | 日本欧美在线视频 | 日本少妇ⅹxxxxx视频 | 91精品在线看 | 变态 另类 国产 亚洲 | 欧美xx孕妇 | 99黄色网| 日韩av一区二区在线观看 | 不许穿内裤随时挨c调教h苏绵 | 三上悠亚一区二区 | 在线视频毛片 | 激情欧美一区二区免费视频 | 欧美精品v国产精品v日韩精品 | 黑人一级| 怡红院毛片 | 污污在线观看视频 | www.色网站 | 91夫妻在线 | 91福利视频免费观看 | 天天爱天天射 | a成人在线 | 中文字幕日韩精品在线 | 免费观看在线高清 | 国产一区二区三区精品视频 | 亚洲视频小说 | 校园伸入裙底揉捏1v1h | 久久久视频在线观看 | 欧美精品一区二区三区久久久竹菊 | 少妇三级 | 日韩伊人 | 黑人毛片网站 | 成人免费xxxxx在线视频 | 欧美三级午夜理伦三级小说 | 91看黄| 亚洲无套| 男人操女人的软件 | 男女做的视频 | 丰满熟妇人妻av无码区 | 69午夜| 无码一区二区三区免费 | 天堂中文字幕在线 | 日日狠狠久久 | 男人的天堂手机在线 | 狠狠操狠狠摸 | 欧美日韩在线观看视频 | 日本r级电影在线观看 | 国产a精品 | 日韩淫 | www.久久av | 色婷婷久| 久久亚洲激情 |