【问题标题】:How to get column names SQL in python如何在python中获取列名SQL
【发布时间】:2021-12-27 09:35:10
【问题描述】:

我想在 Python 中将 db 放入 pandas df。我使用以下代码:

self.cursor = self.connection.cursor()
query = """
        SELECT * FROM `an_visit` AS `visit`                 
        JOIN `an_ip` AS `ip`  ON  (`visit`.`ip_id` = `ip`.`ip_id`)
        JOIN `an_useragent` AS `useragent` ON (`visit`.`useragent_id` = `useragent`.`useragent_id`)                 
        JOIN `an_pageview` AS `pageview`  ON (`visit`.`visit_id` = `pageview`.`visit_id`)       
        WHERE `visit`.`visit_id` BETWEEN  %s AND %s
        """
self.cursor.execute(query, (start_id, end_id))

df = pd.DataFrame(self.cursor.fetchall())

此代码有效,但我也想获取列名。我试过这个问题MySQL: Get column name or alias from query

但这不起作用:

fields = map(lambda x: x[0], self.cursor.description)
result = [dict(zip(fields, row)) for row in self.cursor.fetchall()]

如何将列名从 db 获取到 df?谢谢

【问题讨论】:

  • 你能解释一下“获取列名”是什么意思吗?你想要的输出是什么?
  • @sophocles 现在我的 df 的名称分别为 1、2、3、...、25。我想在 DB 中使用相同的名称,即 ip_id、@987654325 @等
  • 当你说上面的代码不起作用时,是产生错误还是没有给你预期的输出?
  • @Jayvee 我已经解决了,看我的回答,谢谢你的努力!
  • 酷,很高兴听到这个消息

标签: python mysql


【解决方案1】:

对我有用的是:

field_names = [i[0] for i in self.cursor.description ]

【讨论】:

  • 感谢您发布您找到的解决方案
【解决方案2】:

列出数据库中所有列的最佳做法是从连接游标执行此查询

SELECT TABLE_CATALOG,TABLE_SCHEMA,TABLE_NAME,COLUMN_NAME,DATA_TYPE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE  TABLE_SCHEMA='<schema>' AND TABLE_NAME = '<table_name>'

【讨论】:

  • 好的,你能写出来让它传递给我上面的例子吗?我不知道如何根据我的情况修改它。
【解决方案3】:

MySql 游标中有一个 column_names 属性可以使用:

row = dict(zip(self.cursor.column_names, self.cursor.fetchone()))

https://dev.mysql.com/doc/connector-python/en/connector-python-api-mysqlcursor-column-names.html

【讨论】:

  • 我试过了,但是AttributeError: 'Cursor' object has no attribute 'column_names'
  • 你在连接一个 mysql 数据库吗?
  • 是的,使用import pymysql as mysql 和self.connection = mysql.connect()
  • 这很奇怪,你用 "self" 来限定它,我已经更新了答案。
  • 是的,我在方法中使用self 进行操作。同样的错误
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-08-07
  • 2011-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-24
  • 2021-02-03
相关资源
最近更新 更多