python sqlalchemy不执行sql查询

Den*_*tes 6 python sql-server sqlalchemy

我正在使用 Python 和 sqlalchemy 来清空存储在 SQL Server 中的表。看起来作为函数参数给出的 SQL 查询session.execute根本不执行。该表仍然包含数据。

当我在 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)
Run Code Online (Sandbox Code Playgroud)

Cod*_*ker 6

问题是您没有提交交易。根据您的配置,您需要将autocommit设置为 True,或在执行后提交事务(通常在需要回滚的多个事务中处理):

您可以在这里设置:

sessionmaker(bind=engine, autocommit=True)
Run Code Online (Sandbox Code Playgroud)

或者:

session.commit()
Run Code Online (Sandbox Code Playgroud)

参考sessionmaker()

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