2016-03-08 64 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)