Python SQLAlchemy将行插入到桥接表
我的问题是如何使用SQLAlchemy将行插入桥接表?我试图查找,但由于两个原因无法直接应用它们:桥接表有一个附加列,而且引用的对象已经存在,我们不想重新创建它们 假设我有三张桌子:袜子、鞋子和桥牌。桥接表有3列:Python SQLAlchemy将行插入到桥接表,python,database,sqlalchemy,foreign-keys,associations,Python,Database,Sqlalchemy,Foreign Keys,Associations,我的问题是如何使用SQLAlchemy将行插入桥接表?我试图查找,但由于两个原因无法直接应用它们:桥接表有一个附加列,而且引用的对象已经存在,我们不想重新创建它们 假设我有三张桌子:袜子、鞋子和桥牌。桥接表有3列: 外国短袜 外企鞋 整数 我定义数据库模式的方式与中的类似(请参见多对多部分),其中“普通”表定义为类,桥接表定义为表: bridge = Table(...) class Sock(Base): ... class Shoe(Base): ... 我使用psql检查了数据库模式
- 外国短袜
- 外企鞋
- 整数
bridge = Table(...)
class Sock(Base): ...
class Shoe(Base): ...
我使用psql检查了数据库模式是否正确创建。我可以穿袜子和鞋子。当我尝试向桥接表中插入某些内容时,会出现错误
首先,我尝试像插入普通表一样插入行:
link = bridge(...)
db.add(link)
db.commit()
提交行生成
TypeError:Table对象不可调用
。我假设这是因为桥是在没有类声明的情况下定义的。我发现了另一个例子,他们也为桥接表声明了一个类,所以我尝试了。如果我声明了一个类而不是一个“表”,我的其他类就会因为未解析的引用“桥”而中断。声明类的顺序无关紧要。如果我同时声明一个表和一个类,我会得到一个已定义的错误。我还试着猜测各种其他语法选项,但目前我已经没有什么想法了。您可以找到主要问题的答案。至于为什么将bridge
声明为映射类bridge
不起作用,您需要将类定义中的bridge
替换为bridge.\uuuu table\uuu
。(当然,你会得到“未解析的引用”,因为你还没有定义bridge
任何地方!)我修改了你链接的例子。现在我不会因为添加链接而出错,但它们不会出现在数据库中。同样,我可以添加到常规表中,但不能添加到桥接表中。我不知道在没有错误的情况下如何调试它。你必须发布一个。如果只提供症状而不提供正在执行的操作,则无法进行调试。现在发布MCVE。在某些行的末尾有额外的逗号。