sqlite3 нераспознанная ошибка токена для (md5 или sha1) - PullRequest
0 голосов
/ 24 марта 2012

как создать таблицу с sha1 или md5 в качестве имени таблицы в sqlite3, используя python, я получаю Exception OperationalError, говорящий о нераспознанном токене, есть ли альтернативный метод

Ответы [ 2 ]

2 голосов
/ 24 марта 2012

Я предполагаю, что вы используете значение функции, например md5.hexdigest (), в качестве имени таблицы. Если это так, то вам необходимо учитывать тот факт, что значение хеш может начинаться с цифры . SQLite не позволяет начинать имя таблицы с цифры. Простейшим решением было бы добавить какой-нибудь префикс, например:

>>> table_name = "table%s" % hashlib.sha1('blurp').hexdigest()
>>> print(table_name)
table5187399948bdcff4fa10220cd8509257567c6b5a
1 голос
/ 24 марта 2012

У меня отлично работает:

>>> 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-инъекцией.

...