1.数据库编程
从前⾯我们知道数据库概念包含 数据库⽂件、服务器和数据库客户端 客户端我们之前已经⽤过的有navicat/mysql-client等程序。
问题: 如何使⽤客户端将100000⾏数据插⼊到数据库?
⼤家会发现如果⽤之前客户端⼏乎是不可能完全这个任务的, 因为我们不可能去构造出那个插⼊10w⾏
数据的SQL。可是,如果我们有⼀个功能能够插⼊⼀⾏数据,借助程序强⼤的特点-重复,就可以轻⽽
易举的就将10w⾏数据收⼊麾下。这种通过使⽤程序代码的⽅式去连接数据库服务器,通过和服务器
进⾏交互完成对数据库的增删改查的⽅式,就称为数据库编程。
⽽此刻学习的pymysql就是⼀种客户端。
2.Python 中操作MySQL 步骤
- 导入模块
- 建立连接对象
- 创建游标对象
- 使用游标对象执行SQL语句
- 获取执行的结果
- 打印输出获取的内容
- 关闭游标对象
- 关闭连接对象
3.pymysql模块的使用
import pymysql
3.1Connection 对象
conn=connect(参数列表)
- 参数host:连接的mysql主机,如果本机是’localhost’
- 参数port:连接的mysql主机的端⼝,默认是3306
- 参数database:数据库的名称
- 参数user:连接的⽤户名
- 参数password:连接的密码
- 参数charset:通信采⽤的编码⽅式,推荐使⽤utf8
conn.close()
conn.commit()
conn.rollback()
- 通过连接获取游标
cur = conn.cursor() 返回Cursor对象,⽤于执⾏sql语句并获得结果
3.2 Cursor游标对象
- 调用Connection对象的cursor()⽅法再传给一个变量
conn.cursor()
⽬的: 执⾏sql语句(使⽤频度最⾼的语句为select、insert、update、delete)
execute(operation [, parameters ]) 执⾏SQL语句,返回受影响的⾏数,主要⽤于执⾏insert、
update、delete语句,也可以执⾏create、alter、drop等语句
变量.close()
变量.fetchone() 返回⼀个元组 形如 (1,‘妲⼰’,18)
变量.fetchall() 执⾏查询时,获取结果集的所有⾏,⼀⾏构成⼀个元组,再将这些元组装⼊⼀
个元组返回 形如((1,‘公孙离’,20),(2,‘妲⼰’,18))
3.3pymysql完成数据查询
import pymysql
创建和数据库服务器的连接 服务器地址 端⼝ ⽤户名 密码 数据库名 通信使⽤字符和数据库字符集⼀致
conn = pymysql.connect(host=‘主机’, port=端口, user=‘用户名’, password=‘密码’,database=‘指定数据库’)
获取游标
cursor = conn.cursor()
执⾏SQL语句 返回值就是SQL语句在执⾏过程中影响的⾏数
sql = “”“select * from hero;”""
row_count = cursor.execute(sql)
print(“SQL语句执⾏影响的⾏数%d” % row_count)
取出结果集中⼀⾏ 返回的结果是⼀⾏ (1, ‘妲⼰’, 2)
print(cursor.fetchone())
取出结果集中的所有数据 返回 ((⼀⾏数据),(),())
((1, ‘妲⼰’, 2), (2, ‘李⽩’, 1), (3, ‘程咬⾦’, 3), (4, ‘亚瑟’, 5), (5, ‘荆轲’, 99))
for line in cursor.fetchall():
print(line)
关闭游标
cursor.close()
关闭连接
conn.close()