python - 将数据从 MySQL 数据库导入到 Pandas 数据框中,包括列名

标签 python mysql sql pandas numpy

我正在将数据从 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 列索引。例如,列名不是 0,而是 MySQL 表中的“First_column”。有什么好的方法可以解决这个问题吗?还是有比我的更有效的方法将数据从 MySQL 导入 Pandas 数据框?

最佳答案

IMO 使用 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)

这也应该注意列名...

关于python - 将数据从 MySQL 数据库导入到 Pandas 数据框中,包括列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37730243/

相关文章:

mysql - 带括号的 SQL 文本尝试运行函数

mysql - 组合 3 个 SQL 查询

python - 将对象的实例附加到列表仅适用于耗时的深度复制,我该如何更改它?

python - 将 python 文件作为作为脚本执行的模块运行与仅运行 python 之间的区别?

python - 使用 Pandas Dataframe.to_latex() 格式化表格

python - PyQt:如何从 Python 转换为 QDate 样式

mysql - select 中嵌套查询中的多列

mysql - 一般错误 : 1651 Query cache is disabled; restart the server with query_cache_type=1 to enable it

mysql - 搜索某个日期是否在事件中

sql - 在部署时将大量数据导入 SQL Server (Express) 数据库