2012-03-24 22 views
0
のpythonを使用してsqlite3ののテーブル名としてSHA1またはMD5を持つテーブルを作成する方法

は、私が認識されないトークンを言ってOperationalError例外を取得しています、任意の代替方法sqlite3の認識できないトークンエラー

+0

完全なトレースバックとコードの適切な部分を投稿してください。ありがとうございました。 – bernie

答えて

2

私はテーブル名としてmd5.hexdigest()のような関数の値を使用していると仮定しています。もしそうなら、ハッシュ値は数字から始まるかもしれないという事実を考慮する必要があります。 SQLiteでは、数字からテーブル名を開始することはできません。最も簡単な解決策は、次のような接頭辞を追加することです:

>>> table_name = "table%s" % hashlib.sha1('blurp').hexdigest() 
>>> print(table_name) 
table5187399948bdcff4fa10220cd8509257567c6b5a 
+0

ありがとう私はそれが動作した – abhijeet

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インジェクション攻撃のリスクがあるだろうとして、ユーザー入力を取得している任意の設定で文字列の補間を使用しないでください。

関連する問題