首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何通过mysqldb将pandas数据帧插入数据库?

如何通过mysqldb将pandas数据帧插入数据库?
EN

Stack Overflow用户
提问于 2013-05-10 14:29:11
回答 5查看 153K关注 0票数 58

我可以从python连接到我的本地mysql数据库,还可以创建、选择和插入单独的行。

我的问题是:我是否可以直接指示mysqldb获取整个数据帧并将其插入到现有的表中,或者我是否需要迭代行?

在这两种情况下,对于一个包含ID、两个数据列和一个匹配数据帧的非常简单的表,python脚本会是什么样子呢?

EN

回答 5

Stack Overflow用户

发布于 2018-01-23 10:10:16

Andy Hayden提到了正确的函数(to_sql)。在这个答案中,我将给出一个完整的例子,我用Python3.5测试过,但也应该适用于Python2.7(和Python3.x):

首先,让我们创建数据帧:

代码语言:javascript
复制
# Create dataframe
import pandas as pd
import numpy as np

np.random.seed(0)
number_of_samples = 10
frame = pd.DataFrame({
    'feature1': np.random.random(number_of_samples),
    'feature2': np.random.random(number_of_samples),
    'class':    np.random.binomial(2, 0.1, size=number_of_samples),
    },columns=['feature1','feature2','class'])

print(frame)

这就给出了:

代码语言:javascript
复制
   feature1  feature2  class
0  0.548814  0.791725      1
1  0.715189  0.528895      0
2  0.602763  0.568045      0
3  0.544883  0.925597      0
4  0.423655  0.071036      0
5  0.645894  0.087129      0
6  0.437587  0.020218      0
7  0.891773  0.832620      1
8  0.963663  0.778157      0
9  0.383442  0.870012      0

要将此数据帧导入MySQL表,请执行以下操作:

代码语言:javascript
复制
# Import dataframe into MySQL
import sqlalchemy
database_username = 'ENTER USERNAME'
database_password = 'ENTER USERNAME PASSWORD'
database_ip       = 'ENTER DATABASE IP'
database_name     = 'ENTER DATABASE NAME'
database_connection = sqlalchemy.create_engine('mysql+mysqlconnector://{0}:{1}@{2}/{3}'.
                                               format(database_username, database_password, 
                                                      database_ip, database_name))
frame.to_sql(con=database_connection, name='table_name_for_df', if_exists='replace')

一个技巧是MySQLdb不能与Python3.x一起工作。因此,我们改用mysqlconnector,它可能是如下所示的installed

代码语言:javascript
复制
pip install mysql-connector==2.1.4  # version avoids Protobuf error

输出:

请注意,如果数据库中不存在表和列,则to_sql会创建表和列。

票数 23
EN

Stack Overflow用户

发布于 2016-10-09 23:55:03

to_sql方法适用于我。

但是,请记住,它看起来将被弃用,取而代之的是SQLAlchemy:

代码语言:javascript
复制
FutureWarning: The 'mysql' flavor with DBAPI connection is deprecated and will be removed in future versions. MySQL will be further supported with SQLAlchemy connectables. chunksize=chunksize, dtype=dtype)
票数 1
EN

Stack Overflow用户

发布于 2013-05-10 14:56:52

您可以将DataFrame输出为csv文件,然后使用mysqlimport将csv导入到mysql中。

编辑

pandas's build-in sql util似乎提供了一个write_frame函数,但只在sqlite中起作用。

我发现了一些有用的东西,你可以试试this

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16476413

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档