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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Переименовать первичный ключ в SQLite
    Anonymous » » в форуме Android
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • Переименовать первичный ключ в SQLite
    Anonymous » » в форуме Android
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • Переименовать первичный ключ в SQLite
    Anonymous » » в форуме Android
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • SQLALCHEMY - Подпрограмма в гибридной пропорке возвращает первичный ключ вместо объекта ORM
    Anonymous » » в форуме Python
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous
  • Ожидаемый сопоставленный атрибут ORM для аргумента стратегии загрузчика Python SQLAlchemy
    Anonymous » » в форуме Python
    0 Ответы
    42 Просмотры
    Последнее сообщение Anonymous

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