从 Python 调用 MS SQL (Azure) 中的 INSERT 语句会导致错误,NO COUNT ON 不起作



我是新手,请耐心等待。我正在尝试从Python到MS SQL数据库进行非常简单的插入。我尝试过纯 pyodbc 导致"pyodbc.编程错误:无结果。 以前的 SQL 不是查询。

import pyodbc
server = 'server'
database = 'db'
username = 'user'
password = 'pswd'
driver= '{ODBC Driver 17 for SQL Server}'
cnxn = pyodbc.connect('DRIVER='+driver+';SERVER='+server+';PORT=1433;DATABASE='+database+';UID='+username+';PWD='+ password)
cursor = cnxn.cursor()
query = "SET NOCOUNT ON INSERT INTO foo ([x],[y],[z]) VALUES(1,1,1)  "
cursor.execute(query)
row = cursor.fetchone() 
while row: 
print (row)
row = cursor.fetchone()

我尝试了sqlalchemy,pyodbc和pandas的组合,导致"sqlalchemy.exc.ResourceClosedError:此结果对象不返回行。它已自动关闭。

import sqlalchemy
import pyodbc
import urllib
import pandas as pd
server = 'server'
database = 'db'
username = 'user'
password = 'pswd'
driver= '{ODBC Driver 17 for SQL Server}'
params = urllib.parse.quote_plus('DRIVER='+driver+';SERVER='+server+';PORT=1433;DATABASE='+database+';UID='+username+';PWD='+ password)
engine = sqlalchemy.create_engine("mssql+pyodbc:///?odbc_connect=%s" % params)
sql = "SET NOCOUNT ON INSERT INTO foo ([x],[y],[z]) VALUES(1,1,1)"
sql_df = pd.read_sql(sql=sql, con = engine)

我尝试过使用 SET NOCOUNT ON,将代码放入存储过程中并调用该过程和各种其他组合。似乎什么都不起作用。

我将非常感谢任何帮助。谢谢。

为什么使用 SET NOCOUNT ON?

将其卸下,它将进行插入。

您希望使用 row = cursor.fetchone(( 得到什么?

您没有编写选择查询,您希望获得哪些结果?

相关内容

最新更新