Blaze(七):URI strings

URI strings

Blaze使用strings指定数据源,使用时非常简单。

1. 例子

与一组CSV文件或一个SQL数据库交互

# coding: utf-8

from blaze import *
from blaze.utils import example

t = data(example('accounts_*.csv'))
print(t.peek())

t1 = data('sqlite:///%s::iris' % example('iris.db'))
print(t1.peek())

迁移CSV文件数据到SQL数据库

from blaze.utils import example
from odo import odo

print(odo(example('iris.csv'), 'sqlite:///myfile.db::iris'))

Blaze支持的URIs的种类:

  • 磁盘上文件的路径,包含如下扩展:

    • .csv
    • .json
    • .csv.gz/json.gz
      • .hdf5(使用h5py)
    • .hdf5::/datapath
    • hdfstore://filename.hdf5(使用pandas.HDFStore格式)
    • .bcolz
    • .xls(x)
  • 如下的SQLAlchemy strings

    • sqlite:absolute/path/to/myfile.db::tablename
    • sqlite:absolute/path/to/myfile.db
    • postgresql://username:password@hostname:port
    • impala://hostname(使用impala)
    • 其余被SQLAlchemy支持的
  • 如下格式的MongoDB连接strings

    mongodb://username:password@hostname:port/database_name::collection_name

  • 如下格式的Blaze server strings

    blaze://hostname:port(默认端口号6363)

如果对于传统的URI需要额外的一个位置或者一个表名,可以在URI末尾使用::分割并跟在其后面。

2. 如何工作的

Blaze依赖于odo库来处理URI。URI是由resource函数管理的,而resource函数是基于正则表达式分发的。例如下面处理.json文件的一个简单的resource函数(尽管Blaze实际的解决方法比它更全面):

from blaze import resource
import json

@resource.register('.+\.json')
def resource_json(uri):
    with open(uri):
        data = json.load(uri)
    return data
3. 可以扩展到自己的类型吗?

当然可以。正如2. 如何工作的部分所展示的那样导入和扩展resource,剩下的blaze将自动接受你的更改。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值