pandas读取各类sql数据源
大数据分析中,我们经常需要使用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进行数据分析了。
以上是我个人的一些总结。
pandas读取各类sql数据源的更多相关文章
- Python+Pandas 读取Oracle数据库
Python+Pandas 读取Oracle数据库 import pandas as pd from sqlalchemy import create_engine import cx_Oracle ...
- JSP读取My SQL数据乱码问题的解决
用jsp读取My SQL数据库里面的数据,结果读出来的是乱码,把jsp页面的charset.pageEncoding属性都改成了UTF-8,My SQL数据库的Collate属性也改成了UTF-8,还 ...
- DevExpress后置代码中初始化SQL数据源的方法
//初始化SQL数据源的提供者和连接字符串 函数 OK public virtual void InitSqlDataSource_ConStr(SqlDataSource sql_ds) { Con ...
- SpringBoot文档翻译系列——29.SQL数据源
原创作品,可以转载,但是请标注出处地址: 因为需要使用到这方面内容,所有对这一部分进行了翻译. 29 使用SQL数据源 SpringBoot为SQL数据源提供了广泛支持,从直接使用JdbcTempl ...
- 深入理解pandas读取excel,txt,csv文件等命令
pandas读取文件官方提供的文档 在使用pandas读取文件之前,必备的内容,必然属于官方文档,官方文档查阅地址 http://pandas.pydata.org/pandas-docs/versi ...
- Pandas读取文件
如何使用pandas的read_csv模块以及其他读取文件的模块?? 一起来看一看 Pandas中read_csv和read_table的区别 注:使用pandas读取文件格式为pandas特有的da ...
- Pandas 读取文本格式数据
title 其实书中说的我认为不够全,因为公司里面现在主要用stata和spss,暂时还没有用到sas,excel也很少用 那么读取文件的方式,因为有人已经总结了,我就偷过来算了 对应不同的文件类型有 ...
- Python 使用Pandas读取Excel的学习笔记
这里介绍Python中使用Pandas读取Excel的方法 一.软件环境: OS:Win7 64位 Python 3.7 二.文件准备 1.项目结构: 2.在当前实验文件夹下建立一个Source文件夹 ...
- 机器学习之数据预处理,Pandas读取excel数据
Python读写excel的工具库很多,比如最耳熟能详的xlrd.xlwt,xlutils,openpyxl等.其中xlrd和xlwt库通常配合使用,一个用于读,一个用于写excel.xlutils结 ...
随机推荐
- mysql按照天统计报表,当天没有数据,填0
1.问题复现: 按照天数统计每天的总数,如果其中有几天没有数据,那么group by 返回会忽略那几天,如何填充0?如下图,统计的10-3~10-10 7天的数据,其中只有8号和10号有数据,这样返回 ...
- PHP操作MySQL对表增加一列(一个字段)
2014-03-19 16:59 1471人阅读 评论(0) 收藏 举报 分类: MySQL(12) 对于已经建立好的数据库,在一个已经有字段的表内新加字段可用以下方法: mysql_query(&q ...
- asp.net -mvc框架复习(6)-基于MVC实现简单计算器
1.创建好文件夹 2.视图层代码编写 <%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<dyn ...
- oracle11g安装教程(注意事项及图文教程)
Oracle安装与重装注意事项 1.安装oracle(**) 注意:安装Oracle之前确定自己的主机(计算机)名要保证计算机名是英文的. 1.oracle的安装文件不要放在含有中文的目录当中,如:d ...
- struts2 从一个action跳转到另一个action的struts.xml文件的配置
解释: 想要用<result>跳转到另一个action,原来的配置代码是: <action name="insertDept" class="strut ...
- SSH中post提交表单action中文乱码问题
我的问题对应的解决方案是:web.xml中filter的顺序问题[置顶].需要将编码过滤器放置在所有过滤器之前. 在解决这个问题途中学习到的东西: 解决方案总结(post中文乱码): 前后台编码方式一 ...
- java中的nextLine
package scanner; import java.util.Scanner; public class NextLine { public static void main(String[] ...
- PowerDesigner设置null约束
在PDM的表属性的字段列表中每行最后的P,F,M中的M(Mandatory)打勾就可以了,这样在生成的SQL中会变成not NULL Mandatory:强制的,不知道是不是可以理解为必须赋值的
- Java基础——反射 reflect
什么是反射 (1)Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功能称 ...
- C/C++基础知识总结
[006] HIWORD宏取高16位. [005] 使用strcmp需判断参数是否为NULL [004] main函数的第三个参数envp 有的编译器支持三个参数的main函数,但不推荐这么写. [0 ...