Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python SQLAlchemy视图处理_Python_Postgresql_Sqlalchemy - Fatal编程技术网

Python SQLAlchemy视图处理

Python SQLAlchemy视图处理,python,postgresql,sqlalchemy,Python,Postgresql,Sqlalchemy,请告诉我如何以类似于在表上使用SQLAlchemy的方式从视图中选择和操作行 下面是如果name\u address\u vw是一个表(引擎已经使用JDBC Psycopg2设置到PostgreSQL数据库,但未显示),我将如何执行查询: SQLAlchemy失败,因为name\u address\u vw不是meta.tables的关键成员 我理解这是因为它是一个视图,而不是一个表 以下是用于设置和填充后端PostgreSQL的SQL语句: CREATE TABLE name ( id

请告诉我如何以类似于在表上使用SQLAlchemy的方式从视图中选择和操作行

下面是如果name\u address\u vw是一个表(引擎已经使用JDBC Psycopg2设置到PostgreSQL数据库,但未显示),我将如何执行查询:

SQLAlchemy失败,因为name\u address\u vw不是meta.tables的关键成员 我理解这是因为它是一个视图,而不是一个表

以下是用于设置和填充后端PostgreSQL的SQL语句:

CREATE TABLE name
(
    id SERIAL PRIMARY KEY,
    name VARCHAR NOT NULL
);

CREATE TABLE address
(
    id SERIAL PRIMARY KEY,
    idA INTEGER REFERENCES name(id),
    address VARCHAR
);

CREATE VIEW name_address_vw AS SELECT
    A.id,
    A.name,
    B.address
FROM name A
LEFT JOIN address B ON A.id = B.idA;

INSERT INTO name(
id, name)
VALUES 
    (1, 'John Soap'),
    (2, 'Jane Doe');

INSERT INTO address(
id, idA, address)
VALUES
    (1, 1, 'John''s place'),
    (2, 2, 'Jane''s pad');
如果我上面的SQLAlchemy代码不清楚,下面是PostreSQL查询的等效代码:

SELECT name FROM name_address_vw WHERE address LIKE '%pad%' LIMIT 1;
显然,我给出的示例非常简单,一旦检索到视图行上的其他列,我需要能够查询它们,因此请为我提供一个通用的解决方案,而不是仅适用于此示例的解决方案。非常感谢。

自0.8版以来,已不推荐使用的参数,应替换为更具表现力的方法,该方法还允许:


谢谢这似乎就是问题所在。
SELECT name FROM name_address_vw WHERE address LIKE '%pad%' LIMIT 1;
meta = MetaData(Engine)
meta.reflect(views=True)
nav = meta.tables['name_address_vw']