转载自品略图书馆 http://www.pinlue.com/article/2020/05/1907/5210537002933.html
PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb。
1.PyMySQL的安装
PS G:\book> pip install pymysql
Collecting pymysql
Downloading https://files.pythonhosted.org/packages/ed/39/15045ae46f2a123019aa968dfcba0396c161c20f855f11dea6796bcaae95/PyMySQL-0.9.3-py2.py3-none-any.whl (47kB)
100% |████████████████████████████████| 51kB 17kB/s
Installing collected packages: pymysql
Successfully installed pymysql-0.9.3
2.使用python操作数据库的流程
3.各个对象的介绍
导入import pymysql后,使用pymysql.connect函数就可以连接数据库了。
pymysql.connect()参数说明:
conn=pymysql.connect(host="127.0.0.1",user="root",passwd="123456",db="test",port=3306)
还可以简写为这样:
conn=pymysql.connect("127.0.0.1","root","123456","test",3306)
打开数据库链接后,返回一个connection对象。
connection对象支持的方法,如下表所示:
通过connection对象的cursor方法,返回一个cursor游标对象,
cursor对象支持的方法,如下表所示:
4. 连接数据库
import pymysql
#数据库连接,返回数据库连接对象
conn=pymysql.connect("127.0.0.1","root","123456","tt",3306)
#conn=pymysql.connect("127.0.0.1","root","123456","tt",3306)
cur=conn.cursor()
5.创建数据表
sql="""
create table test(id int not null auto_increment primary key,username varchar(50),password varchar(50))
"""
cur.execute(sql)
注意:这段代码是创建一个表,一般可以通过可视化界面进行创建。
6. 插入数据
插入test表中数据,该表有两个字段,可以使用占位符%s,可以有效避免sql注入问题。参数通过元组插入。
insertsql="""
insert into test(username,password) values (%s,%s)
"""
cur.execute(insertsql,("admin","123456"))
还可以executemany实现批量插入,比起循环插入效率要高。
insertmanysql="""
insert into test(username,password) values (%s,%s)
"""
cur.executemany(insertmanysql,[("zhangsan","123456"),("master","123456")])
上述方式无论插入单条数据还是多条数据都不会立即生效,需要进行事务提交。
conn.commit()
如果出现异常,可以使用事务回滚操作
conn.rollback()
7.查询数据
游标对象提供了fetchall方法,获取全部数据。返回一个元组。
Fetchone方法,获取其中的一个结果,返回一个元组。
cur.execute("select * from test")
rs=cur.fetchall()
for line in rs:
print(line)
<class "tuple">
(1, "admin", "123456")
(2, "zhangsan", "123456")
(3, "master", "123456")
cur.execute("select * from test")
rs=cur.fetchone()
print(rs)
<class "tuple">
(1, "admin", "123456")
8.更新数据
import pymysql
#数据库连接,返回数据库连接对象
conn=pymysql.connect("127.0.0.1","root","123456","etc",3306)
cur=conn.cursor()
try:
updatesql="update test set username=%s where id=%s"
cur.execute(updatesql,("manager",1))
conn.commit()
cur.execute("select * from test")
rs=cur.fetchall()
for line in rs:
print(line)
except:
conn.rollback()
conn.close()
(1, "manager", "123456")
(2, "zhangsan", "123456")
(3, "master", "123456")
9.删除数据
import pymysql
#数据库连接,返回数据库连接对象
conn=pymysql.connect("127.0.0.1","root","123456","tt",3306)
cur=conn.cursor()
try:
delsql="delete from test where id=%s"
cur.execute(delsql,(3,))
conn.commit()
cur.execute("select * from test")
rs=cur.fetchall()
print(rs)
except:
print("发生了错误")
conn.rollback()
conn.close()
((1, "manager", "123456"), (2, "zhangsan", "123456"))
可以看到,id=3的数据已经被删除。
python访问数据库基本类似,非常简单,大家动手做一个属于你的数据库应用吧。