我有一个数据库,格式如下。
(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))