【问题标题】:How to get column names from a SQL query?如何从 SQL 查询中获取列名?
【发布时间】:2020-10-24 04:04:30
【问题描述】:

我需要将来自 SQL 查询的数据放入 Pandas 数据框中。请告诉我是否可以获取查询结果的列名?我发现 sqlalchemy 中有一个 keys() 函数,但它对我不起作用:

import mysql.connector
import pandas as pd

mydb = mysql.connector.connect(
  host="SQLServer",
  user="sqlusr",
  password="usrpasswd",
  database="sqldb"
)

cursor = mydb.cursor()

Query="SELECT Title, Review, Rate FROM reviews;"
cursor.execute(Query)

df = pd.DataFrame(cursor.fetchall())
df.columns = cursor.keys()

AttributeError: 'CMySQLCursor' 对象没有属性 'keys'

【问题讨论】:

  • 你为什么不使用pd.read_sql_querylink
  • @sammywemmy 完全正确。引用 OP 的代码来执行“df=pd.read_sql_query(Query, mydb)”将拉入一个带有列名的数据框。游标对于执行存储过程等其他事情很有用,但对于直接读取,这是要走的路。

标签: mysql sql python-3.x pandas mysql-connector


【解决方案1】:

显示来自您的数据库名称.您的表名称的列

【讨论】:

    【解决方案2】:

    我认为你正在寻找它

    cnx = mysql.connector.connect(user=DB_USER, password=DB_USER_PASSWORD, host=DB_HOST, database=DB_NAME)
    cursor = cnx.cursor()
    query = ("SELECT `name`, `ftp_name`, `created_at`, `status` AS `status_customer` FROM `customers"
             "WHERE `status` = %(status)s")
    
    cursor.execute(query, { 'status': 1 })
    
    # cursor.description will give you a tuple of tuples where [0] for each is the column header.
    
    num_fields = len(cursor.description)
    field_names = [i[0] for i in cursor.description]
    
    print(num_fields)
    
    print(field_names)
    
    >>> 4
    >>> [u'name', u'ftp_name', 'created_at', u'status_customer']
    
    # OR just use this cursor function:
    
    print(cursor.column_names)
    
    >>> (u'name', u'ftp_name', 'created_at', u'status_customer')
    

    希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 2019-05-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-27
      • 1970-01-01
      • 1970-01-01
      • 2016-06-08
      • 1970-01-01
      相关资源
      最近更新 更多