![](/img/trans.png)
[英]In pandas, how to replace values matching a condition with a value from the names of their columns?
[英]Python/Pandas How to get columns names AND values from a sql query
我尝试将查询结果从 mysql 导出到 excel 表。 我使用 Msqlconnector、pandas 库,我做到了。
import mysql.connector
import pandas as pd
db = mysql.connector.connect(
host="SQLServer",
user="sqlusr",
password="usrpasswd",
database="sqldb"
)
cur = db.cursor()
cur.execute("SELECT * FROM direction_prix_proxi.matrice_sigma" \
" LEFT JOIN direction_pri.trans_int_prix_gen using(SIGMA, UV)" \
" LEFT JOIN direction_pri.trans_int_prix_module using(SIGMA, UV)" \
" LEFT JOIN direction_pri.trans_int_vol1an_hors_module using(SIGMA, UV)" \
" LEFT JOIN direction_pri.trans_int_vol1an_module using(SIGMA, UV);")
df = pd.DataFrame(cur.fetchall())
df.to_excel(file_path1, index = False, header=True)
它可以工作,但列名不在 excel 表中,我有数字。
我发现有一个 function 用于获取列名,但我没有成功在结果中实现它。
print(cur.column_names)
我发现的其他解决方案:
result = cur.fetchall()
num_fields = len(cur.description)
field_names = [i[0] for i in cur.description]
print(field_names)
for value in result:
print(value)
它在控制台中显示结果,我想将其存储在数据框中,以便在 excel 上导出。 我怎样才能做到这一点?
谢谢
我不确定是否使用 cursor,但我在执行此操作时使用以下格式并且它有效。
import mysql.connector
import pandas as pd
db_conn = mysql.connector.connect(
host="SQLServer",
user="sqlusr",
password="usrpasswd",
database="sqldb"
)
query = """SELECT * FROM direction_prix_proxi.matrice_sigma
LEFT JOIN direction_pri.trans_int_prix_gen using(SIGMA, UV)
LEFT JOIN direction_pri.trans_int_prix_module using(SIGMA, UV)
LEFT JOIN direction_pri.trans_int_vol1an_hors_module using(SIGMA, UV)
LEFT JOIN direction_pri.trans_int_vol1an_module using(SIGMA, UV);
"""
df = pd.read_sql(query, db_conn)
df.to_excel(file_path1, index = False, header=True)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.