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