python—在一个变量pyodbc中运行多个sql server语句

kcrjzv8t  于 2021-07-24  发布在  Java
关注(0)|答案(0)|浏览(381)

我在pyodbc中运行某些语句时遇到问题。我想创建一个表变量,插入到表变量中,更新表变量,然后从表变量中选择all。下面的代码是我目前拥有的,尽管它只执行第一个sql语句,然后执行错误,因为它将每个语句视为自己的语句,而不是一个。
在不拆分分号的情况下,pyodbc抛出并错误地指出该语句不是有效的sql查询。感谢您的帮助。

import pyodbc
conn = pyodbc.connect('Driver={Driver};'
                      'Server=servername;'
                      'Database=db;'
                      'UID=user;'
                      'PWD=pass;')
cursor = conn.cursor()

def main():
    statement = """DECLARE @table TABLE (Brand int not null);
    INSERT INTO @table (Brand) VALUES (1);
    UPDATE @table SET Brand = 2 WHERE Brand = 1;
    SELECT * FROM @table;"""

    for lines in statement.split(";"):
        with conn.cursor() as cur:
            cur.execute(lines)
        print(lines)

    conn.commit()

main()

编辑:感谢@gord thompson提供的解决方案,我正在发布我的新功能,以便其他人可以看到。

def main():
    statement = """SET NOCOUNT ON;
    DECLARE @SQL varchar(1000)
    SET @SQL = 'DECLARE @table TABLE (ClientBrand int not null)
    INSERT INTO @table (Clientbrand) VALUES (1)
    UPDATE @table SET Clientbrand = 2 WHERE ClientBrand = 1
    SELECT * FROM @table'
    EXECUTE (@SQL)"""

    cursor.execute(statement)
    results = cursor.fetchall()

    for i in results:
        print(i)
    conn.commit()
    print('success')

main()

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题