INSERT查询不是从python列表执行,而是从MSSQL Management studio执行得很好

时间:2017-12-11 22:58:56

标签: python sql-server pypyodbc

我正在尝试使用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 我究竟做错了什么?我在管理工作室和python列表中作为同一用户登录到MSSQL,并且用户具有所有必要的权限(如果他没有 - 他将无法从Management工作室执行相同的代码 - 它是对我而言合乎逻辑)。

1 个答案:

答案 0 :(得分:0)

1)您确定fetchone()之后可以exec吗?你没有要求归还 2)如果您希望更改生效,则需要commit()