将SQLite数据库列值转换为字符串并进行连接



我有一个数据库,格式如下。

(1,克里斯汀,克莱恩,‘2002-11-03’,‘北Cynthiafurt’,‘阿兹’,‘50788’)

我试图剥离名字和姓氏值,并将它们传递给一个函数,以将它们连接为字符串。"克里斯汀Klein"在本例中

我使用如下查询:

query_first = db.select([customer.columns.first_name])
proxy_first = connection.execute(query_first)
result_first = proxy_first.fetchall()
print(result_first)

提取所有名字的值,结果如下:[('Kristen',), ('April',), ('Justin',)]

我对姓氏使用相同的格式,并得到相同的输出。

这个语法让我感到困惑,因为它看起来像是一个字典(?)。如何将它们转换为字符串,以便将它们连接成一个内聚的名称?

[('Kristen',), ('April',), ('Justin',)]-是元组的列表。如果您对字符串后面的逗号感到困惑,因为需要将其区分为单个元素tuple元组的。在python wiki中找到完整的信息。

我猜你是使用sqlalchemy库连接到数据库。如果是这样,通过使用first_name选择last_name将在末尾为您提供result_set列表,该列表在for loop中是可迭代的。因此,通过连接每个tuple将为您提供full name。请看下面的改动,

#input
query = db.select([customer.columns.first_name, customer.columns.last_name])
result_proxy = connection.execute(query)
result_set = result_proxy.fetchall()
for row in result_set:
print(' '.join(row))
#output
Kristen Klein
Peter Parker
Tony Stark
...

您还可以在查询级别进行连接:

from sqlalchemy.sql import  functions as func
query = db.select(
func.concat(
customer.first_name, ' ', customer.last_name
)
)
results = connection.execute(query).all()

或写原始SQL:

raw_sql = """
SELECT
first_name || ' ' || last_name
FROM
customer
"""
results = connection.execute(raw_sql).all()

这里有一些SQLAlchemy利用答案。在这种情况下:

SQLite不理解func.concat,你必须使用字符串加法运算符。

from sqlalchemy import String
from sqlalchemy.sql.expression import cast
query = db.select(cast(customer.columns.first_name, String) + " " + cast(customer.columns.last_name, String))

最新更新