python 连接mysql_菜鸟世界 -mysql-connector-python 连接操作mysql

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秒

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值