python -- 連接mysql數據庫
阿新 • • 發佈:2017-06-11
進行 chm 遊標對象 gin 命令 rec imp sta print
由於python2.x與3.x的不兼容性,導致在python3中,不能使用類似在2.x中常用的模塊mysqldb來連接mysql數據庫。
在python3.x中, 連接MySQL的方案有:oursql, PyMySQL, myconnpy 等。
我常用的是pymysql。
1、pymysql安裝:
一般推薦直接用pip3包管理器安裝
pip3 install pymysql
還可以有其他安裝方法,百度。
2、pymysql引用:
跟其他模塊一樣,在安裝好pymysql之後,在需要的py文件裏面導入pymysql,然後就能使用pymysql進行mysql數據庫連接操作。
import pymysql
3、pymysql應用:
1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 4 import pymysql 5 6 #連接mysql 7 conn = pymysql.connect( 8 host=‘127.0.0.1‘, 9 port=3306, 10 user=‘root‘, 11 passwd=‘root‘, 12 db=‘pystudy‘, 13 charset=‘utf8‘ 14 ) 15 16 #使用cursor方法創建一個遊標對象 cur 17 cur = conn.cursor()18 19 #使用excute方法執行SQL語句,並返回受影響的行數 20 # reCount = cur.execute(‘select * from students‘) 21 22 #使用executemany方法執行多條insert語句 23 li = [ 24 (‘txowner‘,‘male‘,23,13281818181,‘CN‘), 25 (‘xtsec‘,‘male‘,25,132834321,‘USA‘), 26 (‘tom‘,‘male‘,28,1328153431,‘JP‘), 27 (‘gouzi‘,‘female‘,22,132345181,‘CN‘), 28 ] 29 reCount1 = cur.executemany(‘insert into students(name,sex,age,tel,nal) values(%s,%s,%s,%s,%s)‘,li) 30 31 #刪除數據 32 # reCount = cur.execute(‘delete from students where age = 28‘) 33 34 #修改數據 35 # reCount = cur.execute(‘update students set sex = %s where name = %s‘,(‘female‘,‘admin‘)) 36 #註意:這裏用%s占位,後面寫參數時不需要用% 37 38 #事物回滾操作(事物回滾操作只有在提交事務之前才有效,一旦事物提交,就不能進行回滾了) 39 conn.rollback() #只有在ENGINE=InnoDB時有用,MyISAM不支持事物,所以不能進行回滾 40 41 #提交當前事物到數據庫執行 42 conn.commit() 43 44 #使用cursor對象的fetchall方法獲取全部數據 45 # data = cur.fetchall() 46 # data = cur.fetchone() 47 # data = cur.fetchmany(3) 48 49 # print(data) 50 51 #關閉連接 52 cur.close() 53 conn.close()
4、pymysql模塊說明:
#!/usr/bin/env python # -*- coding: utf-8 -*- ‘‘‘ pymysql模塊作用:python連接mysql 簡單用法: pymysql.Connect()參數說明 host(str): MySQL服務器地址 port(int): MySQL服務器端口號(默認3306可不寫) user(str): 用戶名 passwd(str): 密碼 db(str): 數據庫名稱 charset(str): 連接編碼(默認可不寫) connection對象支持的方法 cursor() 使用該連接創建並返回遊標 commit() 提交當前事務 rollback() 回滾當前事務(mysql使用事務前需確定存儲引擎為innodb,MyISAM是不能進行回滾的) close() 關閉連接 cursor對象支持的方法 execute(op) 執行一個數據庫的操作命令 executemany() 執行多個數據庫的操作命令 fetchone() 取得結果集的下一行 fetchmany(size) 獲取結果集的下幾行(以元組形式返回) fetchall() 獲取結果集中的所有行(以元組形式返回) rowcount() 返回數據條數或影響行數 close() 關閉遊標對象 ‘‘‘
5、事物回滾
1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 4 import pymysql 5 6 #連接mysql 7 conn = pymysql.connect( 8 host=‘127.0.0.1‘, 9 port=3306, 10 user=‘root‘, 11 passwd=‘root‘, 12 db=‘pystudy‘, 13 charset=‘utf8‘ 14 ) 15 16 #使用cursor方法創建一個遊標對象 cur 17 cur = conn.cursor() 18 19 try: 20 li = [ 21 (‘txowner‘,‘male‘,23,13281818181,‘CN‘), 22 (‘xtsec‘,‘male‘,25,132834321,‘USA‘), 23 (‘tom‘,‘male‘,28,1328153431,‘JP‘), 24 (‘gouzi‘,‘female‘,22,132345181,‘CN‘), 25 ] 26 reCount1 = cur.executemany(‘insert into students(name,sex,age,tel,nal) values(%s,%s,%s,%s,%s)‘,li) 27 assert 1==2 28 29 except Exception as e: 30 conn.rollback() 31 32 else: 33 conn.commit() 34 35 #關閉連接 36 cur.close() 37 conn.close()
python -- 連接mysql數據庫