2012-03-24 80 views
0

如何使用Python創建具有SHA1或MD5如sqlite3的表名的表,我收到異常OperationalError說無法識別的令牌,是否有任何替代方法sqlite3的無法識別的令牌錯誤

+0

請發佈完整的追溯和代碼的相應部分。謝謝。 – bernie 2012-03-24 09:36:39

回答

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注入攻擊的風險的任何設置使用字符串插值。