2012-03-24 4 views
0

, wie eine Tabelle mit SHA1 oder MD5 als Tabellenname in sqlite3 mit Python erstellen, ich bin Ausnahme beim Abrufen OperationalError unerkannt Token zu sagen, gibt es eine alternative Methodesqlite3 unerkannt Token Fehler für (md5 oder SHA1)

+0

Bitte schreiben Sie die vollständige Traceback und die entsprechenden Teile Ihres Codes. Vielen Dank. – bernie

Antwort

2

Ich nehme an, Sie verwenden Wert der Funktion wie md5.hexdigest() als Tabellenname. Wenn ja, dann müssen Sie berücksichtigen Tatsache, dass Hash-Wert von einer Ziffer beginnen kann. In SQLite können Sie den Tabellennamen nicht von einer Ziffer aus starten. Die einfachste Lösung wäre, eine Art Präfix hinzuzufügen, z. B .:

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

danke ich habe es funktioniert – abhijeet

1

Adaequat für mich:

>>> 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> 

Caveat: keine String-Interpolation in irgendwelchen Einstellungen verwenden, wenn Sie Benutzereingaben sind immer, wie Sie mit einem Risiko für SQL-Injection-Angriffe sein werden.

Verwandte Themen