Я начинающий разработчик, и пишу бота для телеграмма. Мне нужен сделать для этого бота базу данных, для хранения некоторых данных.
С созданием основных таблиц я разобрался, но мне нужны поля в которые автоматически будут подставлятся текущая дата или порядковый номер числа(автоинкремент).
Прошу не бить палками за код, с sql ранее не работал
У меня есть вот такой код :
import sqlite3 as sq
from conf_lib import Config
class DB:
def __init__(self):
self.db_file = Config().get('DATABASE', 'db_file')
self.connection = sq.connect(self.db_file)
def build_db(self):
cursor = self.connection.cursor()
user_tables = '''
CREATE TABLE users (
user_id INT PRIMARY KEY,
username VARCHAR(255),
first_name VARCHAR(255),
last_name VARCHAR(255),
role TEXT DEFAULT 'user'
);
'''
products_tables = '''
CREATE TABLE products (
plu VARCHAR(255) PRIMARY KEY,
name VARCHAR(255),
barcodes TEXT
);
'''
data_matrix_logs_tables = '''
CREATE TABLE data_matrix_logs (
log_id INTEGER PRIMARY KEY AUTOINCREMENT,
user_id INT,
request_type TEXT,
tp_code TEXT,
requested_count INT,
request_date TEXT,
processing_status TEXT CHECK (processing_status IN (Created', 'Revert', 'Complete')),
FOREIGN KEY (user_id) REFERENCES users(user_id)
);
'''
trigger = '''
CREATE TRIGGER IF NOT EXISTS set_request_date_and_status
BEFORE INSERT ON data_matrix_logs
FOR EACH ROW
BEGIN
SELECT datetime('now') INTO NEW.request_date;
SET NEW.processing_status = 'Создано';
END;
'''
cursor.execute(user_tables)
self.connection.commit()
cursor.execute(products_tables)
self.connection.commit()
cursor.execute(data_matrix_logs_tables)
self.connection.commit()
cursor.execute(trigger)
self.connection.commit()
cursor.close()
self.connection.close()
У меня возникает следующая ошибка:
Traceback (most recent call last):
File "/storage/emulated/0/Download/Projects/datamatrix_bot/main.py", line 59, in <module>
main()
File "/storage/emulated/0/Download/Projects/datamatrix_bot/main.py", line 28, in main
DB().build_db()
File "/storage/emulated/0/Download/Projects/datamatrix_bot/dbw.py", line 56, in build_db
cursor.execute(trigger)
sqlite3.OperationalError: near "INTO": syntax error
Мне нужна таблица data_matrix_logs, в которой должно быть автоматическое назначение log_id и автоподстановка текущей даты в поле request_date