1、mysql-connector-python
这是一个mysql官方提供的python版本的mysql连接库,安装方式很简单
pip install mysql-connector-python
但是使用起来却有点麻烦,因为用的人不多,所以,资料很少,官方提供的资料也很少
2、 连接并查询
import mysql.connector
config = {
'user': 'username',
'password': 'pw',
'host': '123.59.154.80',
'database': 'dbname',
'charset': 'utf8',
"connection_timeout": 5,
"use_pure": True
}
cnx = mysql.connector.connect(**config) # 建立连接
cursor = cnx.cursor(dictionary=True)
sql = "select * from user"
cursor.execute(sql)
for item in cursor.fetchall():
print(item)
cursor.close()
cnx.close()
参数说明:
user_pure 设置为Ture,表示用纯python的接口,如果为False,而你本机安装C库版本的接口,就回用C库版本的接口
connection_timeout, 如果你的sql5秒时间内没有返回结果,就会终止查询抛出异常
在创建cursor时,我指定dictionary=True,这样,返回的结果就是字典格式的
3、 连接池
连接池的使用,非常有趣,在config配置中增加以下三个配置中的任意一个,就可以创建连接池
'pool_size': 10,
"pool_name": "server",
"pool_reset_session": False,
import mysql.connector
config = {
'user': 'zhangdongsheng02',
'password': 'b4wbkynj6nzvgxz4aTqiDvalwtlwnk8I',
'host': '123.59.154.80',
'database': 'fanxin_model_policy_offlineserver',
'raise_on_warnings': True,
'charset': 'utf8',
"connection_timeout": 5,
"use_pure": True,
'pool_size': 10,
"pool_name": "offlineserver",
"pool_reset_session": False
}
cnx = mysql.connector.connect(**config) # 建立连接
cursor = cnx.cursor(dictionary=True)
sql = "select * from user"
cursor.execute(sql)
for item in cursor.fetchall():
print(item)
cursor.close()
cnx.close()
程序内部检测到这三个参数中的任意一个,就会创建一个连接池,你得到的cnx只是连接池中的某个连接,cnx.close()也并不会将连接关闭,而是把连接归还到连接池
当你想再次获得一个连接的时候,只需要执行
cnx = mysql.connector.connect(**config)
就可以再获得一个连接池中的连接,因为这个库在内部用一个字典保存了连接池,key就是pool_name,所以,只要pool_name不变,就可以从连接池内得到连接
感觉这个设计挺别扭的
如果连接长时间不使用,那么连接会被mysql断掉,不过无需担心,每一次你执行
cnx = mysql.connector.connect(**config)
都会检测给你分配的连接是否还有效,不过这就有了一个坑人的地方,如果连接池里的连接不幸都断开了,那么你再次获取连接时
每次给你连接前都要检测一下连接是否有效, 而检测的方法就是发送ping命令,可是别忘了connection_timeout设置是5秒