Python SQL Server数据库循环不工作
使用Python在多个SQL Server数据库中循环,使用select into创建表,但是当我运行脚本时,什么也没有发生,即没有错误消息,表也没有创建。下面是我正在做的一个摘录示例。有人能提供建议吗Python SQL Server数据库循环不工作,python,sql,sql-server,Python,Sql,Sql Server,使用Python在多个SQL Server数据库中循环,使用select into创建表,但是当我运行脚本时,什么也没有发生,即没有错误消息,表也没有创建。下面是我正在做的一个摘录示例。有人能提供建议吗 df = [] # dataframe of database names as example for i, x in df.iterrows(): SQL = """ Drop table if exists {x}..table
df = [] # dataframe of database names as example
for i, x in df.iterrows():
SQL = """
Drop table if exists {x}..table
Select
Name
Into
{y}..table
From
MainDatabase..Details
""".format(x=x['Database'],y=x['Database'])
cursor.execute(SQL)
conn.commit()
看起来您的DB驱动程序不支持多语句行为,请尝试将查询拆分为两个语句,一个使用
drop
,另一个使用select
:
df.iterrows()中的i,x的
drop_sql=“”
删除表(如果存在){x}..table
“”格式(x=x[“数据库”])
选择“sql=”“”
挑选
名称
进入
{y} …桌子
从…起
main数据库..详细信息
“”。格式(x=x['Database'],y=x['Database'])
cursor.execute(drop\u sql)
cursor.execute(选择sql)
cursor.commit()
第二点提示,你的
x=x['Database']
和y=x['Database']
是一样的,对吗?谢谢@frost-nzcr4。关于你的第二个建议,是的,你是对的,它们是一样的。如果不清楚的话,我正在使用Microsoft Sql Server。我已经测试过了,它工作得很好。非常感谢。出于兴趣,您评论DB驱动程序不支持多种行为的逻辑是什么?为什么不呢?谢谢。Python有一个DB API规范,execute
被记录为“准备并执行数据库操作(查询或命令)”,从技术上讲,您的查询包含两个不同性质的操作:DROP的DDL和SELECT的DML。每个数据库服务器都有(或没有)自己的Python DB API驱动程序,这些类型的操作可能有不同的行为,并且可能(或可能没有)为单个查询处理多个操作。谢谢。第二个技巧是什么?您可以省略y,只需在格式化中使用x,如“{x}{x}{x}”。format(x=x['Database'])