Col*_*ber 6 mysql django connection-pooling sqlalchemy
有没有人有连接池与Django,SQLAlchemy和MySQL一起工作?
我使用了这个教程(http://node.to/wordpress/2008/09/30/another-database-connection-pool-solution-for-django-mysql/),但是我遇到的问题是我带回了一个时间字段,它被转换为timedelta,因为没有使用特定于Django的转换.
来自django/db/backends/mysql/base.py的转换代码
django_conversions = conversions.copy()
django_conversions.update({
FIELD_TYPE.TIME: util.typecast_time,
FIELD_TYPE.DECIMAL: util.typecast_decimal,
FIELD_TYPE.NEWDECIMAL: util.typecast_decimal,
Run Code Online (Sandbox Code Playgroud)
})
文章中的连接代码:
if settings.DATABASE_HOST.startswith('/'):
self.connection = Database.connect(port=kwargs['port'],
unix_socket=kwargs['unix_socket'],
user=kwargs['user'],
db=kwargs['db'],
passwd=kwargs['passwd'],
use_unicode=kwargs['use_unicode'],
charset='utf8')
else:
self.connection = Database.connect(host=kwargs['host'],
port=kwargs['port'],
user=kwargs['user'],
db=kwargs['db'],
passwd=kwargs['passwd'],
use_unicode=kwargs['use_unicode'],
charset='utf8')
Run Code Online (Sandbox Code Playgroud)
在 Django trunk 中,编辑 django/db/ init .py 并注释掉以下行:
Signals.request_finished.connect(close_connection)
该信号处理程序会导致它在每次请求后与数据库断开连接。我不知道这样做会产生什么副作用,但在每个请求后启动一个新连接没有任何意义;正如您所注意到的,它会破坏性能。
另一个必要的更改是在 django/middleware/transaction.py 中;删除两个 transaction.is_dirty() 测试并始终调用 commit() 或 rollback()。否则,如果它只从数据库中读取,则不会提交事务,这将使应该关闭的锁保持打开状态。