我使用TKinter建立了一個GUI。在那里,我想輸出存盤的資料,并單獨改變它們。 使用UPDATE命令,我想更新表中的資料。 我使用MariaDB作為資料庫。
我得到了這個錯誤:
我得到了這個錯誤。
Exception inTkinter callback Traceback (most recent call last): 檔案 "C:UserslatanAppDataLocalProgramsPythonPython39lib kinter\__init__.py", 行 1892, in __call__
return self.func(*args) File "C:UserslatanPycharmProjectspythonProjectpolymer ssr. py",行296,inupdate。
c.execute(""UPDATE tssr SET TypeError: 引數2必須是Tuple或List!
下面是完整的函式:
# create update function
def update() 。
# connection to database update().
conn = mariadb.connect(
user="root"。
password="pass",
host="127.0.0.1"。
埠=3306。
資料庫="polymer"#創建游標。
c = conn.cursor()
record_id = select_box.get()
c.execute(""UPDATE tssr SET
Order_name = :order_name,
Operator_name = :operator_name,
樣品 = :樣品。
菌種 = :菌種
WHERE ID = :ID""。
{
'order_name'。Order_name_editor.get()。
'operator_name': Operator_name_editor.get()。
'sample': Sample_editor.get(),
'strain': Strain_editor.get(),
'ID': record_id
})
# commit changes# 關閉連接 Conn.close()
conn.close()
有什么建議嗎,我哪里做錯了?
uj5u.com熱心網友回復:
正如錯誤所提示的,execute()的第二個引數應該是一個list或者一個tuple,而你使用的是一個dict。試試這個:
c.execute(""UPDATE tssr SET
Order_name = %s,
操作員名稱 = %s,
樣品 = %s,
菌種=%s
WHERE ID = %s""。
(
Order_name_editor.get(),
操作員姓名_editor.get(),
Sample_editor.get(),
Strain_editor.get()。
記錄_id
)
)
uj5u.com熱心網友回復:
MariaDB Connector/Python不支持PEP-249中列出的命名樣式引數。默認的paramstyle是qmark:
>>> mariadb.paramstyle
'qmark'
然而,也可以使用format或pyformat引數樣式(限制是它們不能混合使用):
cursor.execute("select ? , ?", ("This is paramstyle", "qmark"))。
cursor.execute("select %s,%s", ("this is paramstyle", "format"))。
游標。 執行("選擇%(val1)s,%(val2)s", { "val1" : "這是paramstyle", "val2" : "pyformat"})。)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/330579.html
標籤:
