如何在Python中获取列名SQL

voj*_*tam 2 python mysql

我想用 Python 获取 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())
Run Code Online (Sandbox Code Playgroud)

该代码有效,但我也想获取列名。我尝试了这个问题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()]
Run Code Online (Sandbox Code Playgroud)

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

小智 5

在记录集中包含列名的简单方法是设置dictionary=True,如下所示:

self.cursor = self.connection.cursor(字典=True)

然后,所有的 fetch()、fetchall() 和 fetchone() 都返回带有列名和数据的字典

查看链接: https://dev.mysql.com/doc/connector-python/en/connector-python-api-mysqlcursordict.html

https://mariadb-corporation.github.io/mariadb-connector-python/connection.html