请优化以下python查询mysql代码sql = '''select id,name_xiangmu,nr,kind_shu,fen,nr_shiji,fen_shiji,zonghe,isDelete, xuanzexiang,is_taizhang,id_taizhang,id_zhize from luzhi_jilu_xijie where id_jilu_all='{}' order by id_jilu_all desc '''.format(id_jilu_all) co.to_sql(sql) jg = cs.fetchall() data = [] for row in jg: sql = '''select jieshi from xiangmu_biaozhun where name_xiangmu='{}' '''.format(row[1]) co.to_sql(sql) f = cs.fetchone() data.append(row[0:-1],f[0])
时间: 2024-02-05 08:03:27 浏览: 80
首先,建议使用参数化查询来避免 SQL 注入攻击。另外,可以考虑将两个 SQL 查询合并为一个联结查询,这样可以避免多次数据库访问。最后,推荐使用 Pandas 库来处理数据库查询结果,可以将查询结果转换为 DataFrame 对象,方便进行数据处理和分析。
下面是优化后的代码示例:
```python
import pandas as pd
# 使用参数化查询构造 SQL 语句
sql = """
SELECT jlxj.id, jlxj.name_xiangmu, jlxj.nr, jlxj.kind_shu, jlxj.fen, jlxj.nr_shiji, jlxj.fen_shiji, jlxj.zonghe, jlxj.isDelete, jlxj.xuanzexiang, jlxj.is_taizhang, jlxj.id_taizhang, jlxj.id_zhize, xb.jieshi
FROM luzhi_jilu_xijie jlxj
LEFT JOIN xiangmu_biaozhun xb ON jlxj.name_xiangmu = xb.name_xiangmu
WHERE jlxj.id_jilu_all = %s
ORDER BY jlxj.id_jilu_all DESC
"""
# 使用 Pandas 执行查询并转换为 DataFrame 对象
df = pd.read_sql(sql, co, params=[id_jilu_all])
# 打印结果
print(df.head())
```
注意:上述代码中的 `co` 对象为 MySQL 数据库连接对象,需要先定义并初始化。另外,查询结果的列名和顺序可能需要根据实际情况进行调整。
阅读全文