2016-03-08 26 views
0

如何为通过SQL Alchemy引擎对象完成的所有查询设置事务级别READ UNCOMMITED如何在Sql Alchemy Python中为MS SQL后端指定事务隔离级别

我设置isolation_level参数作为谱写这里:http://docs.sqlalchemy.org/en/latest/core/engines.html#sqlalchemy.create_engine.params.isolation_level 通过它传递到create_engine像这样:

my_eng = create_engine(db_conn_string, isolation_level='READ_UNCOMMITTED') 

但对我的后端(MS SQL服务器)我得到以下错误,也许是意料之中的文档确实说它是方言特定的。我只是感到惊讶,没有关于MS SQL隔离级别的文档!

TypeError: Invalid argument(s) 'isolation_level' sent to create_engine(), 
using configuration MSDialect_pyodbc/QueuePool/Engine. Please check that 
the keyword arguments are appropriate for this combination of components. 

此外,我没有看到任何有帮助的方言文档浏览:

http://docs.sqlalchemy.org/en/rel_1_0/dialects/mssql.html#dsn-connections

+0

不是空话,但你可以更新你的文章,如何调用'create_engine()'? –

+0

好点本,更新。 –

回答

2

这只是在SQL炼金术的测试版(预发布)版本(目前为1.1 .0b2)。否则,当前版本(1.0.14)不具有此功能。如果你真的想使用此功能,您可以安装预发布版本是这样的:

pip install --pre --upgrade sqlalchemy 

来源:http://docs.sqlalchemy.org/en/latest/intro.html#install-via-pip

另一种解决方案是发出直接在下面的SQL命令:

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED 

来源:https://msdn.microsoft.com/en-us/library/ms173763.aspx

一种方式做后者在SQL炼金术是:

query = 'SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED' 
session.connection().connection.execute(query)