SQLAlchemy 2.0 Сопоставленный первичный ключ столбца не работает в SQLitePython

Программы на Python
Anonymous
SQLAlchemy 2.0 Сопоставленный первичный ключ столбца не работает в SQLite

Сообщение Anonymous »

При тестировании сопоставленного столбца SQLAlchemy 2.0 с базой данных SQLLite создается таблица со значением первичного ключа. но таблица теперь отображает ее, созданную с использованием первичного ключа. из-за этого невозможно вставить значение в эту таблицу.
Режим Класс

Код: Выделить всё

import datetime
from typing import Optional

from sqlalchemy import String, TIMESTAMP, Integer
from sqlalchemy import func
from sqlalchemy.dialects import postgresql, sqlite
from sqlalchemy.orm import DeclarativeBase
from sqlalchemy.orm import Mapped, mapped_column
from sqlalchemy.schema import CreateTable
from typing_extensions import Annotated

timestamp = Annotated[datetime.datetime, mapped_column(nullable=False, server_default=func.CURRENT_TIMESTAMP()),]

class Base(DeclarativeBase):
type_annotation_map = {datetime.datetime: TIMESTAMP(timezone=True), }

class UserClass(Base):
__tablename__ = "user"

id: Mapped[Integer] = mapped_column(Integer, primary_key=True, autoincrement=True)
name: Mapped[str] = mapped_column(String(50))
fullname: Mapped[Optional[str]] = mapped_column(String(50), nullable=False)
nickname: Mapped[Optional[str]] = mapped_column(String(30))
date: Mapped[datetime.datetime]
status: Mapped[str]
created_at: Mapped[timestamp] = mapped_column(server_default=func.UTC_TIMESTAMP())
updated_at: Mapped[timestamp] = mapped_column(server_default=func.UTC_TIMESTAMP())
Таблица
Таблица создается следующим образом:

Код: Выделить всё

CREATE TABLE user (
id BIGINT NOT NULL,
name VARCHAR(50) NOT NULL,
fullname VARCHAR(50) NOT NULL,
nickname VARCHAR(30),
date TIMESTAMP NOT NULL,
status VARCHAR NOT NULL,
created_at TIMESTAMP DEFAULT (UTC_TIMESTAMP()) NOT NULL,
updated_at TIMESTAMP DEFAULT (UTC_TIMESTAMP()) NOT NULL,
PRIMARY KEY (id)
);
Но когда я вставляю это значение, появляется это сообщение об ошибке:
Вставить команду:

Код: Выделить всё

INSERT INTO user (name, fullname, nickname, date, status, created_at, updated_at) VALUES ('John', 'John Doe', 'Johnny', '2024-09-21 19:09:51.484769', 'active', '2024-09-21 19:09:51.490379', '2024-09-21 19:09:51.490400')
sqlite3.IntegrityError) Ошибка ограничения NOT NULL: user.id

I думаю, что первичный ключ должен быть создан таким образом в автоинкременте первичного ключа целочисленного идентификатора sqllite. Как сопоставить столбец для создания такого первичного ключа?
Спасибо

Подробнее здесь: https://stackoverflow.com/questions/790 ... in-sqllite

Вернуться в «Python»