【发布时间】:2019-07-26 00:51:50
【问题描述】:
最初我使用以下命令重命名 SQL 表:
Q = """sp_rename {}, {}""".format(OLD_TABLE_NAME,NEW_TABLE NAME)
但是,这导致了“超出锁定请求超时期限”错误,我认为这是由于在查询末尾缺少“提交”(尽管我对此没有信心)。
因此,我采用了一个新查询(改编自 this question)。
Q2 = """BEGIN TRANSACTION
GO
EXECUTE sp_rename N'{}', N'{}', 'OBJECT'
GO
ALTER TABLE {} SET (LOCK_ESCALATION = TABLE)
GO
COMMIT""".format(OLD_TABLE_NAME,NEW_TABLE NAME,NEW_TABLE NAME)
但是,我现在收到 ProgrammingError 提示“'GO' 附近的语法不正确。”
我是否需要删除 Q2 的某些部分才能使查询正常工作?还是其他部分有问题?
以下是我用来连接 SQL 服务器的两个函数:
from sqlalchemy import create_engine
import pypyodbc as pp
server1 = {
'drivername': 'mssql+pyodbc',
'servername': 'SERVERNAME',
#'port': '5432',
'username': 'WebAccess',
'password': ':|Ax-*6_6!5H',
'driver': 'SQL Server Native Client 11.0',
'trusted_connection': 'yes',
'legacy_schema_aliasing': False
}
def getEngine(servername, database):
DB = server1
#Create connection to SQL database
DB['database'] = database
servername1 = servername.lower()
engine = create_engine('mssql+pyodbc://' + DB['username'] + ':' + DB['password'] + '@' + DB['servername'] + '/' + DB['database'] + '?' + 'driver=' + DB['driver'])#, echo=True)
return engine
def SQLcommand(query,servername,database):
connection = pp.connect("""Driver={SQL Server};Server=""" + servername + """;Database=""" + database + """;uid=USERNAME;pwd=PASSWORD""")
cursor = connection.cursor()
cursor.execute(query)
connection.commit()
connection.close()
【问题讨论】:
标签: sql-server python-3.x tsql sqlalchemy pypyodbc