Никогда не используйте оператор %
с SQL - это может привести к внедрению SQL.Исправьте ваше execute
утверждение следующим образом:
cur.execute("INSERT INTO token VALUES (?, ?)", (token,expires))
На самом деле есть еще одна проблема: вы не можете использовать cur.fetchone()
после INSERT
.
Полный пример:
$ sqlite3 test.db
sqlite> create table token (token text primary key, expires text);
$ python
>>> import sqlite3
>>> from datetime import datetime, timedelta
>>> from uuid import uuid4
>>> token = uuid4().bytes.encode("base64")
>>> expires = datetime.now() + timedelta(days=1)
>>> conn = sqlite3.connect("test.db")
>>> cur = conn.cursor()
>>> cur.execute("INSERT INTO token VALUES (?, ?)", (token, expires))
<sqlite3.Cursor object at 0x7fdb18c70660>
>>> cur.execute("SELECT * FROM token")
<sqlite3.Cursor object at 0x7fdb18c70660>
>>> cur.fetchone()
(u'9SVqLgL8ShWcCzCvzw+2nA==\n', u'2011-04-18 15:36:45.079025')