首页 > 代码库 > python -- 连接mysql数据库

python -- 连接mysql数据库

由于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 = http://www.mamicode.com/cur.fetchall()
46 # data = http://www.mamicode.com/cur.fetchone()
47 # data = http://www.mamicode.com/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数据库