我正在嘗試更新現有 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/qiye/526233.html
上一篇:無法將psql插入本地轉發的dockerpostgres影像埠
下一篇:表創建停止而不拋出例外
