簡體   English   中英

使用列表作為標題的python sqlite3 CREATE TABLE轉義?

[英]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.

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