Я давно застрял в этой проблеме, надеюсь, кто-нибудь сможет меня просветить. У меня есть база данных SQL я хотел бы обновить. Вот несколько фрагментов кода. Я извлек данные из sql в Python, затем применил функцию hex_to_string & slicing bin и планирую обновить базу данных SQL. У меня нет идентификатора в базе данных, но у меня есть 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 ("" "ОБНОВЛЕНИЕ Access.dbo.M_PWA SET P_PULSES =? WHERE DATETIME =?" "", (row_list, aValue)) pyodbc.ProgrammingError: ('42000',
«[42000] [Microsoft] [ODBC Driver 11 для SQL Server] [SQL Server] столбец,
параметр или переменная # 1: невозможно найти тип данных READONLY. (2715)
(SQLExecDirectW); [42000] [Microsoft] [Драйвер ODBC 11 для SQL
Сервер] [SQL Server] Оператор (ы) не может быть подготовлен. (8180); [42000]
[Microsoft] [Драйвер ODBC 11 для SQL Server] [Параметр SQL Server] или
переменная '@ P1' имеет недопустимый тип данных. (2724) ")
Пожалуйста, помогите, спасибо.