当前位置: 首页 > 面试题库 >

如何强制SQLAlchemy包含重复的列?

殷学
2023-03-14
问题内容

我正在学习SQLAlchemy表达式语言,并且正在尝试执行一个琐碎的查询,该查询通过select([users.c.id, users.c.id])以下方式返回单个重复的列:

from sqlalchemy import create_engine, Table, Column, Integer, String, MetaData, insert, select
engine = create_engine('sqlite:///:memory:', echo=True)
conn = engine.connect()
metadata = MetaData()
users = Table('users', metadata,
Column('id', Integer, primary_key=True),
Column('name', String),
Column('fullname', String),
)
metadata.create_all(engine)
conn.execute(users.insert(), [
{'id': 1, 'name' : 'jack', 'fullname': 'Jack Jones'},
{'id': 2, 'name' : 'wendy', 'fullname': 'Wendy Williams'},
])
print(list(conn.execute(select([users.c.id, users.c.id]))))

哪个输出:

[(1,), (2,)]

即,仅两个请求的列之一。我期望:

[(1, 2), (2, 2)]

为了再次确认我的期望是正确的,我直接在sqlite3和PostgreSQL
9.2(下面的[1]和[2])中运行了等效的查询,这两个查询都正确地返回了重复的id。我正在使用SQLAlchemy版本0.8.0b2,Python3.2.3,sqlite3 3.6.12和Mac OS X 10.6和10.7。

提前致谢!

[1] sqlite3

$ sqlite3 temp.db
CREATE TABLE users(id INTEGER, name TEXT, fullname TEXT);
INSERT INTO users VALUES(1, 'jack', 'Jack Jones');
INSERT INTO users VALUES(2, 'wendy', 'Wendy Williams');
SELECT id, id FROM users;
->
1|1
2|2

[2] PostgreSQL

$ /Library/PostgreSQL/9.2/bin/psql -U postgres
CREATE DATABASE temp;
CREATE TABLE users(id INTEGER, name TEXT, fullname TEXT);
INSERT INTO users VALUES(1, 'jack', 'Jack Jones');
INSERT INTO users VALUES(2, 'wendy', 'Wendy Williams');
SELECT id, id FROM users;
->
1 |  1
2 |  2

问题答案:

您的列中至少有一个需要标签来在两者之间建立区分。

print(list(conn.execute(select([users.c.id, users.c.id.label('id2')]))))


 类似资料:
  • 我有一个目标C类 但是如何在Swift语言中包含这一点呢?

  • 问题内容: 使用JSON-lib时,如何阻止该方法存储包含JSON的字符串作为JSON而不是转义字符串? 例如: 印刷品: 我希望它打印: 是的,我意识到这很令人讨厌。但是,这是为了支持JSON序列化管道,出于互操作性的考虑,这是预期的行为。在某些情况下,我们会序列化可能是/包含有效JSON的用户输入。我们不希望用户输入成为将输入序列化的JSON对象的一部分。 手动转义不起作用,因为它会导致JSO

  • “有四种多态性:参数、包含、强制和重载”。 在注释中,它指用具有不同参数的方法重载,也指重载运算符,例如在ints和floats意义上的+。 Wikipedia还指出,“在许多语言中,使用函数重载支持ad hoc多态性。”

  • 我想创建一个debian包,当安装时,它将用pip安装几个python包。我能想到两种方法: > 将python包安装到一个目录中,然后从该目录生成一个debian包。但这会混淆构建主机(例如其pip元数据),尤其是在主机已经安装了其中一些包的情况下。 用所有python包制作一个debian包,在debian安装和卸载过程中,运行一些脚本来安装/卸载python包。但是这将需要另外两个脚本来维护

  • 我是php和ajax的新手。我试图从文档列表中强制下载文件。单击按钮后使用ajax调用触发以下功能。 我假设我得到的是文件内容作为响应,而不是下载文件。如果能给我一些建议,我将不胜感激。

  • 我觉得这是很基本的东西,但是我找不到正确的信息。我包括一个javascript文件在我的html: 在客户机数据库中。js我正在尝试包含一个类: 在phoenix.js我有这样的课: 但是,在浏览器控制台中,我得到错误: 显然,解决这个问题的正确方法是转换client_db。js是一个模块,但如何最好地实现这一点还不清楚。