簡體   English   中英

在python中創建sqlite3表的安全方法

[英]safe way to create sqlite3 table in python

對於插入表格,安全的方法是

c.execute("insert into table (?,?,?,...)",my_tuple)

但是如何安全地創建一個表? 我嘗試過這樣的事情:

conn = sqlite3.connect(database)
c = conn.cursor()
cmd = "create table ? (? text,? text)"
my_tuple = ("my_table","first","second")
c.execute(cmd,my_tuple)

但我得到這樣的錯誤:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
sqlite3.OperationalError: near "?": syntax error

我應該只在python中組裝一個字符串並將其拋出到sqlite來創建表嗎?

類似問題的回答可能有助於https://stackoverflow.com/a/3247553/1709198

在那里,回答者認為不可能用問號方法命名表格,而是提出了一種方法來“清理”輸入,方法是定義一個“擦除”輸入的功能,這樣可以刪除諸如此類的東西)(][;,以便某人不能嘗試拋出sql代碼之類的); drop tables -- ); drop tables --搞砸了。

我也不知道有什么方法可以讓問號方法與表名一起工作,我認為這個'清理字符串'的方法和它一樣好。

如果您只是嘗試導入csv文件,並假設某些可能試圖弄亂您的數據庫的用戶沒有將它們發送給您,請將它們放在Python中:

"create table %s (%s text,%s text)" % ("my_table","first","second")

如果電子表格有可能來自惡意用戶,那么您可以擔心清理列/文件名。

暫無
暫無

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

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