简单SQLAlchemy子工厂示例

2024-04-25 21:28:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在现有数据库上用一个基本的SQLAlchemy模型实现FactoryBoy。下面是我的设置的粗略近似值,以及呈现的错误。在

Model.py

base = declarative_base()

class Person(Base):
  person_id = Column(Integer, autoincrement=True, primary_key=True)
  group_id = Column(ForeignKey(Group.group_id))


class Group(Base)
  group_id = Column(Integer, autoincrement=True, primary_key=True)

Factory.py

^{pr2}$

test.py

PersonFactory.create()

错误:

sqlalchemy.exc.ProgrammingError: (psycopg2.ProgrammingError) can't adapt type 'Group' [SQL: 'INSERT INTO Person (group_id) VALUES (%(group_id)s,')] [parameters: {'group_id': }]

如何正确地设置一个具有declarative_base()和外键关系的模型,使FactoryBoy的{}将正确填充依赖模型?在


Tags: py模型idtruebase错误groupcolumn
1条回答
网友
1楼 · 发布于 2024-04-25 21:28:09

与将Group实例分配给foreign key column属性不同,请创建一个工厂填充的^{}属性:

class Person(Base):
    person_id = Column(Integer, autoincrement=True, primary_key=True)
    group_id = Column(ForeignKey(Group.group_id))
    group = relationship(Group)

...

class PersonFactory(SQLAlchemyModelFactory):
    group = factory.SubFactory(GroupFactory)

然后,SQLAlchemy会在将对象刷新到DB时正确处理外键的设置。在

相关问题 更多 >