【Python模块】pymysql的使用
概要
如果要通过python来对MySQL数据库进行操作,那么可以使用pymysql模块。
参考文档
一、安装pymysql模块
pip install pymysql
二、源代码阅读
2.1、连接
pymysql的所有对数据库的操作都必须先与数据库服务建立连接。
对于连接,pymysql提供了connect()方法,该方法返回的是Connections模块下的Connection类的实例。
从源码来看,数据库的连接实质上就是TCP连接(要提供帐号和密码)。
# 在pymysql模块的__init__.py文件中
Connect = connect = Connection = connections.Connection
# 在pymysql模块的connections.py文件中
class Connection:
...
def __init__(...):
...
self.host = host or "localhost"
self.port = port or 3306
...
# defer_connect 是传进来的参数,默认为False
if defer_connect:
self._sock = None
else:
self.connect()
...
def connect(self, sock=None):
...
# 使用python提供的scoket,tcp连接
sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
sock.settimeout(self.connect_timeout)
sock.connect(self.unix_socket)
...
...
2.2、游标
在连接上数据库后,想要操作数据库时,就需要使用游标 Cursor。
游标,即"游动的标志",这是数据库中一个很重要的概念。
有时候,我们执行─条查询语句的时候,往往会得到N条返回结果,执行sql语句取出这些返回结果的接口(起始点),就是游标。
沿着这个游标,我们可以一次取出一行记录,也可以一次取出全部数据。并且,随着取数据的过程,游标也会相应向前移动,直到取完数据为止。
对于游标,pymysql里,由Connection类的实例来提供cursor() 方法,该方法返回的是新的游标对象,在连接没有关闭之前,游标对象可以反复使用。
注:在pymysql里,除了默认的Cursor游标,还有DictCursor、SSCursor、SSDictCursor游标。
# 在pymysql模块的connections.py文件中
class Connection:
...
def cursor(self, cursor=None):
if cursor:
return cursor(self)
return self.cursorclass(self)
...
2.3、执行SQL语句
因为是要通过游标,才能执行SQL语句,所以游标对象中也提供了两种执行SQL语句的方法:执行单条语句的execute()方法;执行多条语句的executemany()方法。
这两只方法的返回值都是受影响的行数。
# 在pymysql模块的cursors.py文件中
class Cursor