如何将Python sqlite3 SQL查询结果按单独行输出而非单行合并展示
解决方案
你当前代码中fetchone()返回的是单条查询结果组成的元组,直接输出的话会展示为整个元组的单行格式,要实现每个值单独占一行,可按以下方案调整:
方案1:修改函数直接返回符合格式的字符串
import sqlite3 def getdata(name): conn = sqlite3.connect('details.db') c = conn.cursor() # 参数化查询避免SQL注入风险,不推荐直接拼接SQL字符串 c.execute("SELECT * FROM tbldetails WHERE name = ?", (name,)) result = c.fetchone() conn.close() if result: # 将元组所有元素转字符串后用换行符拼接 return '\n'.join(str(i) for i in result) return ''
调用该函数直接输出就能得到你要的逐行展示效果。
方案2:不修改原函数返回值,调用时逐行打印
如果不想改动原有函数的返回逻辑,可在拿到结果后遍历输出:
query_res = getdata("你要查询的name值") for val in query_res: print(val)
注意事项
- 原代码直接拼接SQL字符串的写法存在SQL注入漏洞,若传入恶意参数可能导致数据泄露、数据损坏等问题,优先使用参数化查询写法
- 数据库连接使用完毕后请主动关闭,避免资源占用
内容的提问来源于stack exchange,提问作者Dylan Caughey
相关产品推荐
相关产品推荐

