【发布时间】:2017-12-11 22:58:56
【问题描述】:
我正在尝试使用 python 中的 pypyodbc 库对 MSSQL Server 执行一个简单的 INSERT 查询。 如果我尝试执行
SELECT Country, City, Street, House, Zipcode, Date FROM postal_test_db.dbo.addresses
从 Microsoft SQL Management Studio 中它可以正确执行,就像我从我的 python 代码中执行它一样:
import pypyodbc
connection_string ='Driver={SQL Server};Server=PC\TEW_SQLEXPRESS;Uid=py_test_user;Pwd=1q2w3e4r5t!A;'
connection = pypyodbc.connect(connection_string)
SQL = "SELECT Country, City, Street, House, Zipcode, Date FROM postal_test_db.dbo.addresses"
cur = connection.cursor()
result = cur.execute(SQL)
print(result.fetchone())
cur.close()
connection.close()
但如果我尝试从 Microsoft SQL Management Studio 执行下一个代码:
INSERT INTO postal_test_db.dbo.addresses (Country, City, Street, House, Zipcode) `VALUES ('Россия', 'Ульяновск', 'Варейкиса', '25', '432035')`
那么它在管理工作室中仍然可以正常工作,但是应该执行相同操作的 python 代码无法执行
import pypyodbc
connection_string ='Driver={SQL Server};Server=PC\TEW_SQLEXPRESS;Uid=py_test_user;Pwd=1q2w3e4r5t!A;'
connection = pypyodbc.connect(connection_string)
SQL = "INSERT INTO postal_test_db.dbo.addresses (Country, City, Street, House, Zipcode) VALUES ('Россия', 'Ульяновск', 'Варейкиса', '25', '432035')"
cur = connection.cursor()
result = cur.execute(SQL)
print(result.fetchone())
cur.close()
connection.close()
抛出下一个错误:
pypyodbc.ProgrammingError: ('24000', '[24000] [Microsoft][ODBC SQL Server Driver
]Invalid cursor state')
the visual representation of the CMD window with the corresponding error message 我究竟做错了什么?我在 Management Studio 和 python 列表中以同一用户身份登录到 MSSQL,并且该用户拥有所有必要的权限(如果他没有 - 他将无法从 Management Studio 执行相同的代码 - 它是对我来说合乎逻辑)。
【问题讨论】:
-
print行发生错误。fetchone是否在INSERT之后工作? -
不,
row = cur.fetchone())紧跟在result = cur.execute(SQL)行之后不起作用并引发与print(result.fetchone())相同的错误。
标签: python sql-server pypyodbc