()用于创建python与数据库之间的连接_Python操作数据库 -- 连接池

连接池:

连接池是一种标准技术,用于在内存中维护长时间运行的连接,以便有效地重用,并未应用程序可能同时使用的连接总数提供管理。特别是对于服务器端Web应用程序,连接池是内存中维护活动数据库连接池的标准方法,这些活动数据库连接在请求之间重复使用。

sqlAlchemy包括几个连接池实现,这些实现与Engine。 他们还可以直接用于希望像其他浦东DBAPI方法添加池的应用程序。

sqlalchemy 连接池配置:

create_engine() 在大多数情况下,函数具有 QueuePool集成,预先配置了合理的池默认值,最常见 QueuePool优化参数可以直接传递到create_engine()作为关键字参数:pool_size, max_overflow, pool_recycle 和 pool_timeout。

engine = create_engine('postgresql://me@localhost/mydb',

pool_size=20, max_overflow=0)

使用DBUtils:

DBUtils是一套用于管理数据库连接池的Python包,为高频度高并发的数据库访问提供更好的性能,可以自动管理连接对象的创建和释放。并允许对非线程安全的数据库接口进行线程安全包装。

两种外部接口:

PersistentDB:提供线程专用的数据库连接,并自动管理连接。

PooledDB:提供线程间可共享的数据库连接,并自动管理连接。

代码示例:

import pymysql

from dbutils.pooled_db import PooledDB

db_config = {

'host': '192.168.246.129',

'port': 3306,

'user': 'testuser',

'passwd': 'testpass',

'db': 'testdb',

'charset': 'utf8mb4',

'maxconnections': 0, # 连接池允许的最大连接数

'mincached': 4, # 初始化时连接池中至少创建的空闲的连接,0表示不创建

'maxcached': 0, # 连接池中最多闲置的连接,0表示不限制,连接使用完成后的空闲连接保留数。

'maxusage': 5, # 每个连接最多被重复使用的次数,None表示不限制

'blocking': True # 连接池中如果没有可用连接后是否阻塞等待,

# True 等待,让用户等待,尽可能的成功; False 不等待然后报错,尽快告诉用户错误,例如抢购,不成功就提示。

}

spool = PooledDB(pymysql, **db_config)

conn = spool.connection()

cur = conn.cursor()

SQL = 'select * from bookorm;'

cur.execute(SQL)

f = cur.fetchall()

print(f)

cur.close()

conn.close()

参考资料:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值