pandas,读取或存储DataFrames的数据到mysql中

Posted 每天1990

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pandas,读取或存储DataFrames的数据到mysql中相关的知识,希望对你有一定的参考价值。

dataFrames格式的数据是表格形式的,mysql数据库中的数据也是表格形式的,二者可以很方便的读取存储
 
安装依赖的包
pip install pandas
pip install sqlalchemy
pip install pymysql

使用方法 

第一步:建立mysql数据库的连接

connect_info = \'mysql+pymysql://{}:{}@{}:{}/{}?charset=utf8\'.format("username", "password", "host", "port", "db数据库名")
engine = create_engine(connect_info)

 

第二步:读取存储数据库

此步使用的engine为第一步创建的数据库连接

1、读取数据库中的内容【read_sql】

import pandas
pandas.read_sql("sql语句", engine)
 

2、存储dataFrame数据到数据库中【to_sql】

df.to_sql(name=\'table表名\',
          con=engine,
          if_exists=\'append\',
          index=False,
          dtype={\'IterationId\': sqlalchemy.types.Integer(),
                 \'title\': sqlalchemy.types.NVARCHAR(length=255)
                 }
               )

 

方法说明:
df:dataFrame格式的数据,可以通过DataFrame()方法创建一个该对象
pandas.DataFrame({"ID": [], "标题": []})
name:存储到的表名
con:第一步创建的数据库链接
if_exists:
    fail:如果表存在,什么也不做
    replace:如果表存在,drop掉表,重新创建一个表,插入数据
    append:如果表不存在,创建表插入数据;如果表存在,原表追加数据存储
dtype:表字段对应过去的类型,例子举了整形和字符两种;(列不指定类型的话会用默认类型,但是如果类型不匹配会抛错)
 
 
注意点:
1、to_sql的源数据,列名必须和数据库里对应;且不能比数据库中列名多
如果缺少列名,会直接填充缺省值
2、缺省的列,要有默认值
存储到sql的列信息可以为空,但前提是数据库表字段写了默认值;或者类似id这种自增主键允许为空

以上是关于pandas,读取或存储DataFrames的数据到mysql中的主要内容,如果未能解决你的问题,请参考以下文章

将 Pandas DataFrames 保存为 HDF5 存储,各种错误

使用多处理时结合 Pandas DataFrames

使用函数调整 Pandas Dataframes 索引

来自 DataFrames 的点箱图

使用 List Comprehension (Pandas) 从 DataFrames 列表中删除 DataFrames 列

提高 Pandas DataFrames 的行追加性能