Ошибка sqlite3 table sqlitedb_developers already exists
Есть код:
import sqlite3
try:
sqlite_connection = sqlite3.connect('sqlite_python.db')
sqlite_create_table_query = '''CREATE TABLE sqlitedb_developers (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
email text NOT NULL UNIQUE,
joining_date datetime,
salary REAL NOT NULL);'''
cursor = sqlite_connection.cursor()
print("База данных подключена к SQLite")
cursor.execute(sqlite_create_table_query)
sqlite_connection.commit()
print("Таблица SQLite создана")
cursor.close()
except sqlite3.Error as error:
print("Ошибка при подключении к sqlite", error)
finally:
if (sqlite_connection):
sqlite_connection.close()
print("Соединение с SQLite закрыто")
Ввиду того, что я новичок в sqlite, я не понимаю, что было сделано не так. Помогите мне разобраться в этом. Может я что-то не то скачал?
P.S. код с сайта https://pythonru.com/biblioteki/vvedenie-v-sqlite-python. Учусь по нему.
Ответы (1 шт):
Автор решения: Namerek
→ Ссылка
В sqlite нет типа datetime вместо него используется тип text. Соответственно нет и инструментов для работы с подобными данными. В связи с этим (на будущее) рекомендую использовать либо данные даты времени записанные в формат
ISOYYYY-mm-dd HH:MM:SS(datetime.isoformat()в python) в виде типа text для sqlite
либо timestamp (datetime.timestamp()в python) в виде real для sqlite
Ссылка на инфо
import sqlite3
# здесь не может возникнуть ошибки,
# поскольку если этого файла нет,
# обработчик его создаст
conn = sqlite3.connect('sqlite_python.db')
sqlite_create_table_query = """
CREATE TABLE
-- добавление `if not exists` исключает
-- попытку создания таблицы если она уже существует
-- соответственно делая не нужным весь блок `try`
if not exists
developers (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
email text NOT NULL UNIQUE,
-- вот про это место я писал выше,
-- у Вас здесь тип datetime
joining_date text,
salary REAL NOT NULL
);
"""
conn.execute(
sqlite_create_table_query
)
conn.close()