如何使用Python創建具有SHA1或MD5如sqlite3的表名的表,我收到異常OperationalError說無法識別的令牌,是否有任何替代方法sqlite3的無法識別的令牌錯誤
0
A
回答
2
我假設你正在使用像md5.hexdigest()這樣的函數的值作爲表名。如果是這樣,那麼你需要考慮到事實哈希值可能從一個數字開始。 SQLite不允許你從一個數字開始表名。最簡單的解決方案是添加某種前綴,如:
>>> table_name = "table%s" % hashlib.sha1('blurp').hexdigest()
>>> print(table_name)
table5187399948bdcff4fa10220cd8509257567c6b5a
+0
謝謝我做到了 – abhijeet 2012-03-24 18:36:48
1
廠細對我來說:
>>> import sqlite3
>>> conn = sqlite3.connect(':memory:')
>>> conn.execute('create table md5 (mycol)') # if you're being very literal
<sqlite3.Cursor object at 0x35b7dc0>
>>> import hashlib
>>> tbl_name = hashlib.sha1('test').hexdigest()
>>> conn.execute('create table {} (mycol)'.format(tbl_name)) # otherwise
<sqlite3.Cursor object at 0x35b7dc0>
警告:不要在你得到用戶輸入,你將在對SQL注入攻擊的風險的任何設置使用字符串插值。
請發佈完整的追溯和代碼的相應部分。謝謝。 – bernie 2012-03-24 09:36:39