[英]python sqlite3 CREATE TABLE escape using list as headings?
我正在嘗試使用以下代碼在我的sqlite3表中使用列表作為標題:
import sqlite3 as lite
headers = ['Id', 'Name', 'Price']
con = lite.connect('test.sqlite3')
with con:
cur = con.cursor()
cur.execute("CREATE TABLE Cars(? INT, ? TEXT, ? INT)", tuple(headers))
但是我收到此錯誤:
OperationalError: near "?": syntax error
關於如何使它起作用的任何想法?
在來自Python的SQL查詢中,僅在值將是實際數據的地方才允許使用占位符(例如?
)。 對於表和字段名稱之類的元數據,不幸的是您需要字符串替換。
所以在這種情況下
qry = 'CREATE TABLE Cars({} INT, {} TEXT, {} INT)'.format(*headers)
cursor.execute(qry)
當然,如果headers
來自不受信任的來源,這確實使您面臨SQL注入的風險-無法安全地接受來自不受信任的來源的元數據,您必須先清理/驗證查詢后再發送。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.