|id | language
|123456| GE
我无法在SQL Server中更新数据。
我是初学者。我正在编写电报机器人,我想添加新语言。因此,我使用数据库。我有一个带有2列的表,一个被称为nvarchar(id(,另一个称为nchar(语言(,我正在尝试更改语言。
import pypyodbc
...
#for example
id = 123456
lang = 'EN'
#
data = ("""
UPDATE bottest
SET language = ?
WHERE id = ?;
""")
k = (id, lang)
cursor.execute(data, k).rowcount
cursor.commit()
获取此错误:
File "C:UsersMyPCPycharmProjectsbottest_flask_ivenvlibsite-packagespypyodbc.py", line 1007, in check_success
ctrl_err(SQL_HANDLE_STMT, ODBC_obj.stmt_h, ret, ODBC_obj.ansi)
File "C:UsersMyPCPycharmProjectsbottest_flask_ivenvlibsite-packagespypyodbc.py", line 977, in ctrl_err
raise DataError(state,err_text)
pypyodbc.DataError: ('22003', '[22003] [Microsoft][ODBC SQL Server Driver][SQL Server]Arithmetic overflow error converting expression to data type nvarchar.')
您的参数值以错误的顺序指定。language
的参数(在集合子句中(出现在id
的参数之前(在Whewhe子句中(,因此您需要首先指定language
参数值。也就是说,而不是
k = (id, lang)
您需要使用
k = (lang, id) # same order as the parameter placeholders appear in the command text