我正在将MySQL数据库中的数据导入Pandas数据框.以下摘录是我正在使用的代码:

import mysql.connector as sql
import pandas as pd

db_connection = sql.connect(host='hostname', database='db_name', user='username', password='password')
db_cursor = db_connection.cursor()
db_cursor.execute('SELECT * FROM table_name')

table_rows = db_cursor.fetchall()

df = pd.DataFrame(table_rows)

当我打印数据框时,它确实正确地表示了数据,但我的问题是,是否也可以保留列名?以下是一个示例输出:

                          0   1   2     3     4     5     6     7     8
0  :ID[giA0CqQcx+(9kbuSKV== NaN NaN  None  None  None  None  None  None
1  lXB+jIS)DN!CXmj>0(P8^]== NaN NaN  None  None  None  None  None  None   
2  lXB+jIS)DN!CXmj>0(P8^]== NaN NaN  None  None  None  None  None  None   
3  lXB+jIS)DN!CXmj>0(P8^]== NaN NaN  None  None  None  None  None  None   
4  lXB+jIS)DN!CXmj>0(P8^]== NaN NaN  None  None  None  None  None  None   

我想做的是保留列名,它将替换pandas列索引.例如,在MySQL表中,列名不是0,而是"First_column".有什么好办法吗?或者有没有比我更有效的方法将数据从MySQL导入Pandas 数据框?

推荐答案

在我看来,使用pandas从MySQL服务器读取数据要高效得多:

from sqlalchemy import create_engine
import pandas as pd

db_connection_str = 'mysql+pymysql://mysql_user:mysql_password@mysql_host/mysql_db'
db_connection = create_engine(db_connection_str)

df = pd.read_sql('SELECT * FROM table_name', con=db_connection)

这也应该考虑到列名...

Mysql相关问答推荐

是否有一种方法可以在mysql中设置一列,使其自动成为该行的行号的值?

更新MySQL表中子记录的序号

如何在Sequelize中创建限制查询?

MySQL将JSON值从对象类型更改为数组

SQL/Pyspark -判断条件

MySQL Group by或Distinct in Window函数

根据日期重叠转换表格

MySQL 搜索列字段字符串

mysql 代码给我的外键格式不正确

使用Workbench时如何添加mysqldump配置标志

状态为已发货的订单返回产品总数量的SQL(不同的两张表)

在 MySQL 中使用非空条件 LAG() 函数

根据单个日期字段获取范围/天数

谁能帮我优化where子句

如何在考虑另一表的值的情况下计算一列的值

在 MySQL 中转换 JSON 数组值

MySQL 视图

没有 JDBC 类型的方言映射:1111

你如何在 Node.js 中模拟 MySQL(没有 ORM)?

MySQL导入数据库但忽略特定表