python中的mysqldb能對(duì)mysql進(jìn)行操作磷蜀,性能也比pyMysql優(yōu)化,但是對(duì)于python3.x不太兼容襟沮。PyMySQL 是在 Python3.x 版本中用于連接 MySQL 服務(wù)器的一個(gè)庫(kù),遵循 Python 數(shù)據(jù)庫(kù) API v2.0 規(guī)范。所以在python 3上建議使用這個(gè)模塊
安裝pymysql的模塊:
pip install PyMySQL
如果不愿意安裝馒铃,下載下來(lái),解壓文件痕惋,將pymysql文件夾放到你的工程中即可
API:
https://www.python.org/dev/peps/pep-0249/
http://pymysql.readthedocs.io/en/latest/modules/connections.html
http://pymysql.readthedocs.io/en/latest/modules/cursors.html
PyMySQL模塊中常用的2個(gè)對(duì)象Connection Object和Cursor Objects
Connection Object
方法 | 使用說(shuō)明 |
---|---|
.close() | 關(guān)閉數(shù)據(jù)庫(kù)連接 |
.commit() | 提交預(yù)處理的數(shù)據(jù)庫(kù)操作 |
.rollback() | 事務(wù)回滾 |
.cursor() | 連接數(shù)據(jù)庫(kù)是返回cursor Object |
Cursor Objects
方法 | 使用說(shuō)明 |
---|---|
callproc(procname, args=()) | 用來(lái)執(zhí)行存儲(chǔ)過(guò)程,接收的參數(shù)為存儲(chǔ)過(guò)程名和參數(shù)列表,返回值為受影響的行數(shù) |
execute(query, args=None) | 執(zhí)行查詢語(yǔ)句区宇,返回有效的行數(shù)(int) |
executemany(query, args) | querey是一個(gè)查詢字符串,args是一個(gè)參數(shù)序列值戳。這一序列的每一項(xiàng)都是一個(gè)序列或映射對(duì)象议谷。 |
.fetchone() | 返回結(jié)果集的下個(gè)個(gè)記錄 |
fetchmany(size=None) | 返回結(jié)果集的size條記錄 |
.fetchall() | 返回結(jié)果集,返回的是tuple對(duì)象 |
.fetchall_unbuffered() | 返回結(jié)果集堕虹,返回list的對(duì)象 |
read_next() | 讀取下一行 |
.scroll(1,mode='relative') | 按照當(dāng)前位置移動(dòng) |
.scroll(1,mode='absolute') | 按照絕對(duì)位置移動(dòng) |
實(shí)例
import pymysql
conn = pymysql.connect(
# 數(shù)據(jù)庫(kù)的地址
host='XXX',
#數(shù)據(jù)庫(kù)的端口(number類型)
port=XXX,
# 數(shù)據(jù)庫(kù)的帳號(hào)
user='XXX',
# 數(shù)據(jù)庫(kù)的密碼
password='XXX',
#連接中有多個(gè)數(shù)據(jù)庫(kù)卧晓,這個(gè)填要查詢的數(shù)據(jù)庫(kù)的名稱
db='XXX',
# 默認(rèn)是acsic編碼,現(xiàn)在改為
charset='utf8mb4',
# 默認(rèn)返回是tutle赴捞,加入后返回為字典
cursorclass = pymysql.cursors.DictCursor
)
try:
with conn.cursor() as cursor:
sql = 'SELECT * from XX '
cursor.execute(sql)
data = cursor.fetchall()
print(data[3])
finally:
conn.close()
具體實(shí)現(xiàn)參考;http://www.cnblogs.com/guanfuchang/p/6441592.html