繁体   English   中英

Python/Pandas 如何从 sql 查询中获取列名和值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM