假设我们有一个带有两个表A,B的PostgreSQL数据库.
table A columns: id, name table B columns: id, name, array_a
array_a表B中的列包含表A中的可变长度的数组.在SQLAlchemy中,我们有两个类来模拟这些表,比如A类和B类.
以下工作正常,以获取对象B中引用的所有对象A:
session.query(A).join(B, A.id == func.any(B.array_a)).filter(B.id == <id>).all()
Run Code Online (Sandbox Code Playgroud)
我们如何在B中创建一个引用与数组对应的对象A的关系?尝试使用func.any上面的列比较器,但它抱怨ANY(array_a)不是模型中的列.如上所述指定primaryjoin条件似乎也没有削减它.
我正在尝试在另一个模型的字段中存储模型列表。以下是一个简单的示例,其中我有一个现有模型Actor,并且我想Movie使用字段创建一个新模型Movie.list_of_actors:
import uuid
from sqlalchemy import Boolean, Column, Integer, String, DateTime
from sqlalchemy.schema import ForeignKey
rom sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import relationship
Base = declarative_base()
class Actor(Base):
__tablename__ = 'actors'
id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
name = Column(String)
nickname = Column(String)
academy_awards = Column(Integer)
# This is my new model:
class Movie(Base):
__tablename__ = 'movies'
id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
title = Column(String)
# How do I make this a list of foreign …Run Code Online (Sandbox Code Playgroud) python postgresql sqlalchemy foreign-keys foreign-key-relationship
CREATE TABLE test ( id int PRIMARY KEY , name );
CREATE TABLE test1 ( id integer[] REFERENCES test , rollid int );
Run Code Online (Sandbox Code Playgroud)
错误:外键约束“test3_id_fkey”无法实现详细信息:键列“id”和“id”的类型不兼容:整数[]和整数。
之后我也尝试另一种方式
CREATE TABLE test1 ( id integer[] , rollid int);
ALTER TABLE test1 ADD CONSTRAINT foreignkeyarray FOREIGN KEY (id) REFERENCES test;
Run Code Online (Sandbox Code Playgroud)
错误:无法实现外键约束“fkarray”详细信息:键列“id”和“id”的类型不兼容:整数 [] 和整数。
所以我尝试创建一个外键数组意味着它说错误。请告诉我任何人?
postgresql 版本是 9.1。