1. 程式人生 > >python -- 連接mysql數據庫

python -- 連接mysql數據庫

進行 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數據庫