相关疑难解决方法(0)

SQLAlchemy与Postgresql ARRAY的关系

假设我们有一个带有两个表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条件似乎也没有削减它.

arrays postgresql sqlalchemy relationships

9
推荐指数
2
解决办法
4792
查看次数

如何在SQLAlchemy中创建带有外键列表的字段?

我正在尝试在另一个模型的字段中存储模型列表。以下是一个简单的示例,其中我有一个现有模型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

3
推荐指数
1
解决办法
2551
查看次数

需要外键作为数组

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。

postgresql

2
推荐指数
1
解决办法
6227
查看次数