Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server &引用;将表达式转换为数据类型nvarchar";时出现算术溢出错误:pyodbc+;SQL Server_Sql Server_Python 3.x_Pypyodbc - Fatal编程技术网

Sql server &引用;将表达式转换为数据类型nvarchar";时出现算术溢出错误:pyodbc+;SQL Server

Sql server &引用;将表达式转换为数据类型nvarchar";时出现算术溢出错误:pyodbc+;SQL Server,sql-server,python-3.x,pypyodbc,Sql Server,Python 3.x,Pypyodbc,我无法更新SQL Server中的数据 我是初学者。我正在写电报机器人,我想添加新的语言。因此,我使用数据库。 我有一个包含两列的表,一列声明为nvarchar(id),另一列声明为nchar(language),我正在尝试更改语言 |id | language |123456| GE 获取此错误: import pypyodbc ... #for example id = 123456 lang = 'EN' # data = (""" UPDATE bot

我无法更新SQL Server中的数据

我是初学者。我正在写电报机器人,我想添加新的语言。因此,我使用数据库。 我有一个包含两列的表,一列声明为nvarchar(id),另一列声明为nchar(language),我正在尝试更改语言

|id    | language 

|123456| GE
获取此错误:

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()

您的参数值的指定顺序错误。
language
(在SET子句中)的参数出现在
id
(在WHERE子句中)的参数之前,因此您需要首先指定
language
参数值。也就是说,而不是

k=(id,lang)
你需要使用

k=(lang,id)#与参数占位符在命令文本中的显示顺序相同
 File "C:\Users\MyPC\PycharmProjects\bottest_flask_i\venv\lib\site-packages\pypyodbc.py", line 1007, in check_success
    ctrl_err(SQL_HANDLE_STMT, ODBC_obj.stmt_h, ret, ODBC_obj.ansi)
  File "C:\Users\MyPC\PycharmProjects\bottest_flask_i\venv\lib\site-packages\pypyodbc.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.')