9.对接数据库
数据往往存储于SQL类关系型数据库,作为补充,NoSQL数据库进来也流行开来。
从SQL数据库加载数据,将其转换为DataFrame对象很简单。pandas提供的几个函数简化了该过程。
pandas.io.sql模块提供于独立于数据库、叫作sqlalchemy的统一接口。该接口简化了连接模式,不管对于什么类型的数据库,操作命令都只有一套。
连接数据库使用create_engine()函数,你可以用它配置驱动器所需的用户名、密码、端口和数据库实例等所有属性。
下面是各种数据库的连接方法:
from sqlalchemy import create_engine
#1.PostgreSQL
engine = create_engine('postgresql://scott:tiger@localhost:5432/mydatabase')
#2.MySQl
engine = create_engine('mysql+mysqldb://scott:tiger@localhost/foo')
#3.Oracle
engine = create_engine('orcle://scott:tiger@127.0.0.1:1521/sidname')
#4.MSSQL
engine = create_engine('mysql+pyodbc:/mydsn')
#5.SQLite
engine = create_engine('sqlite:///foo.db')
SQLite3数据读取:
Python内置的SQLite数据库的sqlite3。SQLite3工具实现了简单、轻量级的DBMS SQL,因此可以内置于用Python语言实现的任何应用。它很实用,你可以在单个文件中创建一个嵌入式数据库。
from sqlalchemy import create_engine
frame = pd.DataFrame(
np.arange(20).reshape(4,5),
columns = ['white','red','blue','black','green']
)
#1.连接
engine = create_engine('sqlite:///foo.db')
#2.读入colors数据库
frame.to_sql('colors',engine)
#3.读取colors数据
pd.read_sql('colors',engine)
>>
index white red blue black green
0 0 0 1 2 3 4
1 1 5 6 7 8 9
2 2 10 11 12 13 14
3 3 15 16 17 18 19
PostgreSQL数据读写:
#1.连接数据库。
engine = create_engine('postgresql://scott:tiger@localhost:5432/mydatabase')
#2.DataFrame数据结构对象写入数据库中的dataframe表中
frame.to_sql('dataframe',engine)
#3.数据表转换为DataFrame对象
pd.read_sql('daraframe',engine)
读取数据库数据时,把整张表都转换为dataFrame并不是最常用的操作。使用关系型数据库的开发人员,更喜欢用SQL语言的SQL查询选择数据,指定导出形式。
可以将SQL查询语句整合到read_sql_table()函数中去。
pd.read_sql_query('SELECT index,apr,may FROM DATAFRAME WHERE apr > 0.5',engine)
>>
index apr may
0 exp1 0.979086 0.332289
1 exp3 0.905980 0.123449
2 exp4 0.958015 0.448064
NoSQL数据库MongoDB数据读写:
在所有NoSQl数据库()中,MongoDB最为流行。
待续。。。