我已经使用SQLALChemy2.0‘S MappdAsDataclass和DeclarativeBase模型创建了一些表,创建的表如下:
class Base(MappedAsDataclass, DeclarativeBase):
"""subclasses will be converted to dataclasses"""
class Post(Base):
__tablename__ = 'allposts'
post_id: Mapped[int] = mapped_column(init=False, primary_key=True)
collection_id: Mapped[int] = mapped_column(ForeignKey("collections.collection_id"), default=None, nullable=True)
user: Mapped[str] = mapped_column(default=None, nullable=True)
title: Mapped[str] = mapped_column(default=None, nullable=True)
description: Mapped[str] = mapped_column(default=None, nullable=True)
date_added: Mapped[datetime.datetime] = mapped_column(default=None, nullable=True)
date_modified: Mapped[Optional[datetime.datetime]] = mapped_column(default=None, nullable=True)
tags: Mapped[list] = mapped_column(ARRAY(TEXT, dimensions=1), default=None, nullable=True)
views: Mapped[int] = mapped_column(default=0, nullable=True)
Post.__table__
Base.metadata.create_all(engine)
我想使用GUID作为PK,但我在使用DeclarativeBase/MappdAsDataclass通过SQLALChemy创建UUID类型列时遇到了问题
我试着像这样做一个UUID专栏,但没有运气:
from sqlalchemy.dialects.postgresql import UUID
class Post(Base):
__tablename__ = 'allposts'
post_id: Mapped[int] = mapped_column(init=False, primary_key=True)
guid: Mapped[uuid.uuid1] = mapped_column(default=None, nullable=True)
collection_id: Mapped[int] = mapped_column(ForeignKey("collections.collection_id"), default=None, nullable=True)
user: Mapped[str] = mapped_column(default=None, nullable=True)
title: Mapped[str] = mapped_column(default=None, nullable=True)
description: Mapped[str] = mapped_column(default=None, nullable=True)
date_added: Mapped[datetime.datetime] = mapped_column(default=None, nullable=True)
date_modified: Mapped[Optional[datetime.datetime]] = mapped_column(default=None, nullable=True)
tags: Mapped[list] = mapped_column(ARRAY(TEXT, dimensions=1), default=None, nullable=True)
views: Mapped[int] = mapped_column(default=0, nullable=True)
我try 了uuid.uuid1
的不同版本,但如果这是问题所在,我猜错了.
有some SQLAlchemy examples of UUID columns here个,但我似乎想不出如何将其转化为我正在使用的模型.