大数据分析中,我们经常需要使用pandas工具读取各类数据源并将结果保存到数据库中。

本文总结了一些读取和写入常用数据库数据的一些方法,包括mysql,oracle,impala等。

其中读取数据库数据有两种方法,一种是DBAPI2 connection,另一种是SQLAlchemy engine。下面介绍这两种方法。

一、读写mysql数据

1.首先安装python连接mysql的驱动,以mysql.connector为例

2.pandas读取数据,分两种方式:

#DBAPI2 connection方式连接
import mysql.connector
import pandas as pd
conn=mysql.connector.connect(host='127.0.0.1',user='root', passwd='password', db='test')
sql='select * from mytable'
df=pd.read_sql(sql,conn)
#SQLAlchemy engine方式
from sqlalchemy import create_engine
import pandas as pd
engine = create_engine('mysql+mysqlconnector://root:password@10.39.211.198:3306/test')
df=pd.read_sql(sql,engine )

3.pandas写入数据到mysql只有SQLAlchemy engine方式

#SQLAlchemy engine方式
from sqlalchemy import create_engine
import pandas as pd
engine = create_engine('mysql+mysqlconnector://root:password@10.39.211.198:3306/test')
df.to_sql('mytable',con=engine,if_exists='append',index=False)

二、读写oracle数据

1.首先安装python连接oracle的驱动cx_oracle

第2、3步骤同上,只是数据库驱动的写法不同。

oracle写成:

from sqlalchemy import create_engine
conn=cx_Oracle.connect('scott','tiger','10.0.0.100:1521/ORCL')
engine=create_engine('oracle://scott:tiger@10.0.0.100:1521/ORCL', echo=True)

三、读写impala数据

1.首先安装python连接impala的驱动(参照我的博客http://www.cnblogs.com/dotafeiying/p/6956265.html)

第2、3步骤同上,只是数据库驱动的写法不同。

impala写成:

from impala.dbapi import connect
from sqlalchemy import create_engine conn = connect(host='127.0.0.1',port=21050,database='db')
engine=create_engine('impala://127.0.0.1:21050/db')

用pandas往impala写入数据时可能会抛出数据类型错误,

要注意impala的数据类型,下面给一个我在实际项目中解决的例子:

from sqlalchemy.sql.sqltypes import String
df.to_sql('address',con=sqlconn,if_exists='append',index=False,dtype={'address': String})

一定要加后面的 dtype={'address': String}

现在,你就可以尽情的用pandas进行数据分析了。

以上是我个人的一些总结。

最新文章

  1. WEB基础原理——理论复习
  2. web应用 http 响应 url uri
  3. 关于近期项目代码整理(iOS)
  4. phpcms v9最常用的22个调用代码
  5. MySQL的备份的一些策略和方法的总结
  6. [ActionScript 3.0] AS3 3D双圆环贴图
  7. NENU_CS_segment_tree
  8. JavaScript ES7 中使用 async/await 解决回调函数嵌套问题
  9. 自动寻路NavMesh
  10. HTML5对音视频的处理
  11. .net core2.1 使用 dynamic 类型报错
  12. mysql-cluster集群配置
  13. IO流实例
  14. Git中修复bug
  15. Chrome 66 禁止声音自动播放
  16. unity之UGUI屏幕分辨率調整
  17. web api 多版本控制重要的两个类
  18. 软工大作业DB天气项目风险评估
  19. MongoDB学习之(三)增删查改
  20. linux系统解决boot空间不足

热门文章

  1. IntelliJ IDEA 2017.3下载与安装
  2. android studio升级2.3后出现的问题
  3. spring定时任务执行两次 项目重复初始化 项目启动两次
  4. 微信小程序 PHP后端form表单提交实例详解
  5. 邓_PHP面试【001】
  6. Java XML 序列化和反序列化
  7. Jquery实现两级联动
  8. 频繁更换ip会影响SEO优化吗?
  9. 使用telnet发送HTTP请求
  10. Mac 管理员变为了普通用户怎么办?