[学习记录]pymysql的基本操作
pymysql是python与mysql的一个接口库,这里简单记录一下pymysql的使用方法,环境为python3
本篇主要参考《python3网络爬虫开发实战》中关于mysql的部分内容。,原书作者主页https://cuiqingcai.com/5052.html
pymysql官方文档:http://pymysql.readthedocs.io/en/latest/
可以直接通过pip install pymysql安装
常用经典操作:
1.连接数据库
db = pymysql.connect(host='localhost',user=username,password=passwd,port=portnumber,charset='utf8') db.close()
第一步是建立连接,在使用完毕之后记得close断开连接。在connect中最后的charset='utf8'是为了能够正确处理中文字符。
2.游标
cursor=db.cursor() sql=''#填入想要运行的sql语句 cursor.execute(sql)
游标是我们对数据库操作的主要工具,通过游标我们能够运行sql语句,也能获取从数据库返回的查询结果。
3.事务保护
事务保护即我们不允许插入数据只插入了一半的情况,标准写法如下
try: cursor.execute(sql) db.commit() except: db.rollback()
关于db.commit的内容稍后介绍
4.如果我想要插入数据
用python往数据库中插入数据的好处是方便,自动插入大量数据,省去了自己一条一条sql插入。
sql='insert into tablename values(%s,%s,%s,%s)' data=(a,b,c,d) cursor.execute(sql,data) db.commit()
这条语句中将需要插入的数据用%s代替,然后把数据元组作为execute()的第二个参数传进去,这样就可以了。
而db.commit()是将语句交付数据库执行,对于数据插入、更新、删除都需要调用该方法才能生效。
5.数据查询
查询后为了得到数据库的返回结果,需要使用游标的fetchall()或fetchone()方法
sql='select * from test' cursor.execute(sql) data = cursor.fetchall() data = cursor.fetchone()
fetchall()是返回全部的查询结果,fetchone()返回第一条查询的结果。
每当fetchone一次,系统的指针就会自动指向下一条记录,而fetchall会一次性将指针从当前位置不停地往下移动直到得到了全部的查询结果,之后再进行fetchone和fetchall都只能得到空结果了。