You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQLite数据库姓名列值转字符串并拼接为完整姓名的实现方法

问题解答

1. 返回格式说明

你拿到的[('Kristen',), ('April',), ('Justin',)]不是字典结构,是数据库查询fetchall()返回的元组列表:每一行查询结果会被封装为一个元组,即便只查询单个字段,也会生成仅含1个元素的元组,元组内的第一个元素就是你需要的字段字符串值。


2. 最优解决方案:单次查询直接拼接

不需要分两次查询first_name和last_name,一次查询同时取两个字段直接拼接即可,性能更高:

# 同时查询两个姓名字段
query_name = db.select([customer.columns.first_name, customer.columns.last_name])
proxy = connection.execute(query_name)
result_rows = proxy.fetchall()

# 遍历每行结果拼接完整姓名
full_names = [f"{row[0]} {row[1]}" for row in result_rows]
print(full_names)
# 输出示例:['Kristen Klein', 'April xxx', 'Justin xxx']

3. 已有两个单独结果列表的处理方案

如果你已经分别拿到了first_name和last_name的查询结果列表,可以分别提取字符串后按顺序拼接:

# 提取两个列表中的字符串值
first_names = [item[0] for item in result_first]
last_names = [item[0] for item in result_last]

# 按顺序拼接完整姓名
full_names = [f"{f_name} {l_name}" for f_name, l_name in zip(first_names, last_names)]

可选优化:按字段名取值(避免记错下标)

如果想要通过字段名直接取值,不需要记元组下标,可以用mappings()方法把结果转为字典格式:

query_name = db.select([customer.columns.first_name, customer.columns.last_name])
proxy = connection.execute(query_name)
# 转为字典格式的结果列表
result_rows = proxy.mappings().fetchall()

# 直接通过字段名取值拼接
full_names = [f"{row['first_name']} {row['last_name']}" for row in result_rows]

内容的提问来源于stack exchange,提问作者Arturo Altamirano

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 17:06:05