我正在嘗試更新現有 SQLite 資料庫中的單元格。目的是將 a 替換string為id。
import sqlite3
TABLES = ['table1', 'table2', ...]
PAR_TYPES_STRINGS = ['foo', 'bar', ...]
PAR_TYPES_ID = [1, 2, ...]
def upateTable(table, parTypeId, parTypeString):
return f"UPDATE {table} SET par_type = {parTypeId} WHERE par_type = {parTypeString};"
conn = sqlite3.connect('existing_db.db')
cursor = conn.cursor()
for table in TABLES:
for index, parTypeString in enumerate(PAR_TYPES_STRINGS):
parTypeId = PAR_TYPES_ID[index]
cursor.execute(upateTable(table, parTypeId, parTypeString))
conn.commit()
cursor.close()
這給了我
sqlite3.OperationalError:沒有這樣的列:foo
我不明白。我將par_type靜態用作列名,并將其與parTypeString(然后具有foo)動態進行比較。
WHERE par_type = {parTypeString} < dynamicall passed variable
^
hardcoded column name
然而,它說“沒有這樣的列 foo”,這是for loop從PAR_TYPES_STRINGS. 這是為什么?
uj5u.com熱心網友回復:
在函式定義中,您需要加上{parTypeString}引號:'{parTypeString}',因為您要檢查硬編碼列與該字串匹配的位置。否則,該運算式被解釋為檢查兩列之間的相等性,因此會出現錯誤訊息。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/525565.html
上一篇:如何讓資料庫給我兩個資料
下一篇:discord.errors.ApplicationCommandInvokeError:應用程式命令引發例外:OperationalError:接近“,”:語法錯誤
