我已经使用SQLALchemy 2.0的MappedAsDataclass和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/MappedAsDataclass通过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)
型
我尝试了uuid.uuid1
的不同版本,但如果这就是问题所在,我没有猜对。
这里有一些SQLAlchemy UUID列的示例,但我似乎不知道如何将其转换成我正在使用的模型。
1条答案
按热度按时间bkhjykvo1#
下面是一个如何在PostgreSQL服务器上执行此操作的示例:
字符串
这里,它使用了一个服务器默认值,让服务器为我们生成UUID。
型
结果将是:
型