将数据从SQL加载到DataFrame过程很简单,pandas能够简化该过程,例如使用嵌入式SQLite数据库,python内置sqlite3驱动器

import sqlite3

query="""
CREATE TABLE test
(a VARCHAR(20), b VARCHAR(20),
c REAL,d INTEGER
);"""
con=sqlite3.connect(':memory:')
con.execute(query)
con.commit()

插入数据

data=[('Atlanta','Georgia',1.25,6),
        ('Tallahassee','Florida',2.6,3),
        ('Sacramento','California',1.7,5)]
stmt="INSERT INTO test VALUES(?,?,?,?)"
con.executemany(stmt,data)
con.commit()

从表中选取数据时,大部分Python SQL驱动器(PyODBC、psycopg2、MySQLdb、pymssql等)返回一个元组列表

cursor=con.execute('select * from test')
rows=cursor.fetchall()

构造DataFrame

DataFrame(rows,columns=zip(*cursor.description)[0])

pandas有简化上述过程的read_frame函数(位于pandas.io.sql模块)

import pandas.io.sql as sql
sql.read_frame('select * from test',con)

存取MongoDB

启动MongoDB实例,使用pymongo通过默认端口连接

import pymongo
con=pymongo.Connection('localhost',port=27017)

MongoDB服务器的每个运行实例可以有多个数据库,而每个数据库可以有多个集合。

连接tweets集合

tweets=con.db.tweets

向tweets集合写入数据

import requests,json
url='http://search.twitter.com/search.json?q=python%20pandas'
data=json.loads(requests.get(url).text)

for tweet in data['results']:
    tweets.save(tweet)

从tweet查询数据

cursor=tweets.find({'from_user':'wesmckinn'})

构造DataFrame

tweet_fields=['created_at','from_user','id','text']
result=DataFrame(list(cursor),columns=tweet_fields)

results matching ""

    No results matching ""