【发布时间】:2021-03-04 08:29:35
【问题描述】:
我正在执行一个将返回单个列的选择查询,并且我正在尝试将返回的 Row 对象转换为元组。但我似乎遇到了错误:
ids = sum(tuple(conn.execute('select id from some_database.some_table')), ())
TypeError: can only concatenate tuple (not "RowProxy") to tuple
示例代码:
with sqlalchemy_engine.connect() as conn:
ids = sum(tuple(conn.execute('select id from some_database.some_table')), ()) # statement causing error
print(ids)
预期输出:
('123','456','789')
我可以迭代 select 查询的输出并一一附加/打印值,但宁愿使用单行
编辑:
查询select id from some_database.some_table 中的列id 具有字母数字值。所以预期的输出可能是:
('ff123', 'df456', 'gv789')
【问题讨论】:
-
this 会回答您的问题吗? (如果我正确理解您的问题,您希望将元组集合展平为
ints 的集合) -
嗨,@snakecharmerb,
tuple(conn.execute('select id from some_database.some_table')的输出是(('123',), ('456',))。我想将其转换为('123','456')而不将其从字符串更改为 int,因为我在以后的 sql 查询中使用这些值。示例:select *** from *** where id in ('123','456') -
那么
ids = tuple(r for r, in conn.execute(...))? -
是的,就像我在问题中提到的那样,我可以使用 for 循环,但我想知道的是,为什么这不起作用 -
sum(tuple(conn.execute('select id from some_database.some_table')), ())
标签: python python-3.x sqlalchemy