根据JSON Table Schema描述符生成SQL表,加载数据和提取数据。
项目描述
tableschema-sql-py
根据Table Schema描述符生成和加载数据表。
功能
- 实现
tableschema.Storage
接口 - 提供索引和更新等附加功能
内容
入门
安装
该包使用语义版本控制。这意味着主版本可能包含破坏性更改。强烈建议在您的 setup/requirements
文件中指定 package
版本范围,例如 package>=1.0,<2.0
。
pip install tableschema-sql
文档
from datapackage import Package
from tableschema import Table
from sqlalchemy import create_engine
# Create sqlalchemy engine
engine = create_engine('sqlite://')
# Save package to SQL
package = Package('datapackage.json')
package.save(storage='sql', engine=engine)
# Load package from SQL
package = Package(storage='sql', engine=engine)
package.resources
API参考
存储
Storage(self, engine, dbschema=None, prefix='', reflect_only=None, autoincrement=None)
SQL存储
该包实现了表存储接口(详见链接中的完整文档)
仅记录了额外的API
参数
- engine (对象):
sqlalchemy
引擎 - dbschema (字符串):数据库模式名称
- prefix (字符串):所有桶的前缀
- reflect_only (可调用对象):一个布尔谓词,用于过滤反射时表名列表
- autoincrement (字符串/字典):在开始处添加自增列。- 如果是字符串,则是一个自增列名称 - 如果是字典,则是一个自增映射,列名称按桶名称索引,例如,
{'bucket1': 'id', 'bucket2': 'other_id}
storage.create
storage.create(self, bucket, descriptor, force=False, indexes_fields=None)
创建桶
参数
- indexes_fields (字符串数组):包含字段名称的元组列表,或这样的列表列表
storage.write
storage.write(self, bucket, rows, keyed=False, as_generator=False, update_keys=None, buffer_size=1000, use_bloom_filter=True)
写入桶
参数
- keyed (布尔值):接受键行
- as_generator (布尔值):返回生成器以向客户端提供写入控制
- update_keys (字符串数组):如果键值与现有行匹配,则更新而不是插入
- buffer_size (整数=1000):尝试在单个批次中写入到数据库的最大行数
- use_bloom_filter (布尔值=True):是否应使用布隆过滤器来优化数据库更新性能(以一些设置时间为代价)
贡献
开始推荐的途径是创建并激活项目虚拟环境。要将包和开发依赖项安装到活动环境中
$ make install
运行带有linting和覆盖率的测试
$ make test
变更日志
这里仅描述破坏性和最重要的更改。所有发布版本的完整变更日志和文档可以在格式良好的提交历史中找到。
v1.3
- 实现了将约束加载到数据库中的功能
v1.2
- 添加了配置缓冲区大小、使用布隆过滤器的选项 (#77)
v1.1
- 添加了对
autoincrement
参数作为映射的支持 - 修复了SQLite和MySQL的自增支持
v1.0
- 初始驱动程序实现。