Из синтаксиса оператора создания таблицы (AUTOINCREMENT
без подчеркивания) и тега apsw
я подозреваю, что вы используете базу данных SQLite.
Если вы хотите вставить текущуюотметка времени для столбца timestamp
, мое первое предложение - сделать это непосредственно в SQL, а не с помощью переменной, сгенерированной в python. В sqlite CURRENT_TIMESTAP
предоставляет вам текущую дату / время в качестве временной метки:
warns.execute(
"INSERT INTO warns (wdate, server, user, author, reason) VALUES (CURRENT_TIMESTAMP, ?, ?, ?, ?)",
(guild, user, author, reason)
)
Другой вариант, который еще более упростит ваш код, - это установить по умолчанию столбец отметки времени при создании таблицы. Затем вы можете просто игнорировать этот столбец при вставке, и будьте уверены, что будет присвоено правильное значение:
warns.execute(
"""
CREATE TABLE IF NOT EXISTS warns (
id INTEGER PRIMARY KEY AUTOINCREMENT,
wdate timestamp DEFAULT CURRENT_TIMESTAMP,
server string,
user string,
author string,
reason string
)
"""
)
def add_warn(guild: str, user: str, author: str, reason):
with conn1:
warns.execute(
"INSERT INTO warns (server, user, author, reason) VALUES (?, ?, ?, ?)",
(now, guild, user, author, reason)
)
Примечание: date
не является разумным именем столбца, так как он конфликтует с именем типа данных,Я переименовал его wdate
во всем приведенном выше коде.