簡體   English   中英

如何使用Python在UPDATE語句sqlite3中插入變量?

[英]How do I insert variables in the UPDATE Statement sqlite3 with Python?

如果我想使用python在sqlite3中插入變量值,則可以編寫以下語句。 例如:

import sqlite3
import random

conn = sqlite3.connect('testing.db')
c = conn.cursor()
c.execute("CREATE TABLE IF NOT EXISTS testing(Name TEXT, Telephone TEXT, ID REAL)")

var1 = input("Value:")
var2 = input("Value:")
var3 = random.randint(1,20)

c.execute("INSERT INTO testing VALUES(?, ?, ?)", (var1, var2, var3))

conn.commit()
conn.close()

如果我想對UPDATE語句執行相同操作,該怎么辦。 我試過了,給我錯誤:

column = input("Column to update:")
update_user = input("Value to update:")
field_name = input("Where field name equal to:")
value = input("Value")

c.execute("UPDATE testing SET ? = ? WHERE ? = ?", (column, update_user, field_name, value))

conn.commit()

這是我得到的錯誤:

sqlite3.OperationalError: near "?": syntax error

這實際上是一個常見問題,在更新查詢中,您無法參數化列名 換一種說法:

UPDATE testing SET ? = ? WHERE ? = ?
               THIS^       THIS^

不能是查詢占位符,您必須按常規方式插入它們-通過字符串格式設置:

c.execute("""
    UPDATE 
        testing 
    SET 
        {0} = ? 
    WHERE 
        {1} = ?""".format(column, field_name), (update_user, value))

但是,您應該謹慎處理,驗證columnfield_name值,以防止SQL注入攻擊

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM