Python SQL Server数据库循环不工作

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

使用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

    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'])