是的,你可以在 Python 中使用變數來動態地構建 SQL 查詢。使用 sqlite3
模組時,可以通過格式化字符串或參數化查詢來實現這一點。參數化查詢更安全,因為它能夠防止 SQL 注入攻擊。以下是兩種方法的示例:
這種方法不太安全,容易受到 SQL 注入攻擊的影響。這裡只是示例,實際上應該使用參數化查詢。
import sqlite3
# 假設有一個變數名為 column_name
column_name = "欄位1"
value = 100
conn = sqlite3.connect('example.db')
cur = conn.cursor()
# 使用格式化字符串
query = f"SELECT * FROM table WHERE {column_name}=?"
cur.execute(query, (value,))
rows = cur.fetchall()
for row in rows:
print(row)
conn.close()
這種方法更安全,可以防止 SQL 注入攻擊。
import sqlite3
# 假設有一個變數名為 column_name
column_name = "欄位1"
value = 100
conn = sqlite3.connect('example.db')
cur = conn.cursor()
# 使用參數化查詢
query = "SELECT * FROM table WHERE {}=?".format(column_name)
cur.execute(query, (value,))
rows = cur.fetchall()
for row in rows:
print(row)
conn.close()
在參數化查詢中,使用佔位符 ?
並將值作為元組傳遞給 execute
方法。這樣可以確保 SQL 查詢的安全性。