python - 更新到 SQL Server 时出现“找不到数据类型 READONLY”错误
问题描述
纠结这个问题很久了,希望有大神指教。我有一个我想更新的 sql 数据库。以下是部分代码。我将数据从 sql 提取到 Python,然后应用函数 hex_to_string & slicing bin,我计划更新 SQL 数据库。我在数据库中没有任何 ID,但我有区分条目的 DATETIME。
query = """ select P from Table """
cnxn = pyodbc.connect(conn_str)
cnxn.add_output_converter(pyodbc.SQL_VARBINARY, hexToString)
cursor: object = cnxn.cursor()
cursor.execute(query)
dtbs= cursor.fetchall()
row_list=[]
ln = len(dtbs)
cursor.execute(query)
for i in range(ln):
row=cursor.fetchval()
result=slicing_bin(row)
result_float = [float("{0:.2f}".format(i)) for i in result]
row_list.append(result_float)
crsr = cnxn.cursor()
crsr.execute(query)
aList = [item[0] for item in crsr.fetchall()]
for aValue in aList:
crsr.execute("""UPDATE Table SET P=? WHERE DATETIME=?""", (row_list, aValue))
crsr.close()
cnxn.commit()
当我运行此代码时,我收到一条错误消息,
文件“C:/Users/r/.PyCharmCE2018.3/config/scratches/Finalcombined2.py”,第 64 行,在 crsr.execute("""UPDATE Access.dbo.M_PWA SET P_PULSES=?WHERE DATETIME=?"" ", (row_list, aValue)) pyodbc.ProgrammingError: ('42000', "[42000] [Microsoft][ODBC Driver 11 for SQL Server][SQL Server]列、参数或变量 #1: 找不到数据类型 READONLY . (2715) (SQLExecDirectW); [42000] [Microsoft][ODBC Driver 11 for SQL Server][SQL Server]无法准备语句。(8180); [42000] [Microsoft][ODBC Driver 11 for SQL Server][SQL Server]参数或变量“@P1”的数据类型无效。(2724)")
请帮忙,谢谢。
解决方案
嗯,我猜戈德是对的。这当然是我要看的第一件事。好的,这是我如何从 Python 在 MS Access 中进行更新的一个小示例。
#import pypyodbc
import pyodbc
# MS ACCESS DB CONNECTION
pyodbc.lowercase = False
conn = pyodbc.connect(
r"Driver={Microsoft Access Driver (*.mdb, *.accdb)};" +
r"Dbq=C:\\path_here\\Northwind.mdb;")
# OPEN CURSOR AND EXECUTE SQL
cur = conn.cursor()
# Option 1 - no error and no update
cur.execute("UPDATE dbo_test SET Location = 'New York' Where Status = 'Scheduled'");
conn.commit()
cur.close()
conn.close()
你能适应你的具体情况吗?
推荐阅读
- javascript - currying 函数在 javascript 中的工作
- swift - 在下载实际图像时将占位符图像添加到 UICollectionView 单元格
- bash - 从命令的输出中捕获不同位置的子字符串
- kubernetes - Prometheus + Kubernetes 指标来自错误的抓取作业
- ios - ToView 在 Swift 中出现在 FromView 后面
- macos - 以编程方式实现 Mac 长按重音弹出
- java - 通过组合框添加外键时摆动应用程序出错
- android - Android Studio 中的图像混合模式(如 photoshop、paint.net)?
- javascript - 如何在密码中显示前四个字符并在其旁边显示星号?
- git - yarn install 在 git post-receive 钩子中克隆 github 包时失败