2016-12-29 47 views
3

我正在使用Python和sqlalchemy來清空存儲在SQL Server中的表。看起來,作爲session.execute函數中的參數給出的SQL查詢根本不會執行。該表仍然包含數據。python sqlalchemy不執行sql查詢

當我在SQL Server MS中打印並運行相同的查詢時,它完全按照預期進行。

幫助表示讚賞!

tableName = 'someTable' 
engine = sqlalchemy.create_engine('connectionString') 
Session = scoped_session(sessionmaker(bind=engine)) 
currentSession = Session() 
query = 'IF (' 
         'EXISTS (' 
         'SELECT * FROM INFORMATION_SCHEMA.TABLES ' 
         'WHERE TABLE_SCHEMA = \'dbo\' ' 
         'AND TABLE_NAME = \'%s\')) ' 
         'BEGIN ' 
         'DELETE FROM [database].[dbo].[%s] ' 
         'END' % (tableName,tableName) 
session.execute(query) 
print(query) 

回答

3

問題是您沒有提交您的交易。根據您的配置,您將需要設置autocommit爲True,或執行後(在多筆交易通常處理這將需要回滾)提交事務:

您可以設置此位置:

sessionmaker(bind=engine, autocommit=True) 

或者:

session.commit() 

參考sessionmaker()

http://docs.sqlalchemy.org/en/latest/orm/session_api.html

+0

感謝您的快速回答。第一個建議不起作用,儘管第二個建議解決了問題! – Dendrobates

+0

非常好,我很高興能幫上忙! – CodeLikeBeaker