安装pymysql
原理介绍:
使用pymysql指令来连接数据库
host:
要连接的数据库的IP地址,如果是远程的,这里指定远程的ip地址
user
:登录的账户名,如果登录的是最高权限账户则为root
password
:对应的密码
db
:要连接的数据库的名称,如需要访问存储的IRIS数据库,则输入
'IRIS'
charset
:设置编码格式,如utf8mb4就是一个编码格式
cursorclass
:返回到Python的结果,以什么方式存储,如Dict.Cursor是以字典的方式存储
try:
#从数据库链接中得到cursor的数据结构
with connection.cursor() as cursor:
#在之前建立的user表格基础上,插入新数据,这里使用了一个预编译的小技巧,避免每次都要重复写sql的语句
sql="INSERT INTO `USERS`(`email`,`password`) VALUES (%s,%s)"
cursor.execute(sql,('webmaster@python.org','very_secret'))
#执行到这一行指令时才是真正改变了数据库,之前只是缓存在内存中
connection.commit()
调用数据:查询webmaster@python.org邮箱的密码
with connection.cursor() as cursor:
sql = "SELECT `id`,`password` FROM `user` WHERE `email`=%s"
cursor.execute(sql,('webmaster@python.org',))
#只取出一条结果
result=cursor.fetchone()
print(result)
#最后别忘了关闭连接
finally:
connection.close()
完整版:
COMMIT:
commit
之后,insert,update操作才真正进入数据库。因为commit是对一个物理数据尽心给一个真实的修改,所以
它对数据库的资源消其实是相对比较大的。所以比较频繁的commit会很大地降低数据插入的效率。所以,当我们需要插入成千上万的数据的话,通常我们会选择在几百或者几千条数据之后,我们再进行一个统一的commit,这样,效率也会相对高一些;
mysql
有一个autocommit选项。如果我们把这个选项打开之后,我们每一次进行一个insert操作或者update操作,都会在操作之后自动触发commit操作,但在pymysql中,这个选项是默认没被开启的,如果大家希望开启,我们可以在pymysql.connect的db参数后面,加一个autocommit=True参数
。这样的话,我们在insert或者update之后,就不需要专门的commit。
========================我是分割线================================
示例:利用python对iris_id这个数据表进行操作。
#作用:查询id为3的行
import pymysql.cursors
#使用pymysql指令来连接数据库
connection=pymysql.connect(host='localhost',
user='root',
password='1994929',
db='iris')
try:
with connection.cursor() as cursor:
sql= " SELECT * FROM `iris_id` WHERE `id`=%s"#注意上方的小点儿,这个在键盘上数字1的左边
cursor.execute(sql,('3',))#查询id是3的记录
result=cursor.fetchone()
print(result)
finally:
connection.close()
在heidisql中执行同样的sql语句,结果是一样的:
也可以指定dictionary的cursor: