簡體   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