tableschema-sql


Nametableschema-sql JSON
Version 2.0.1 PyPI version JSON
download
home_pagehttps://github.com/frictionlessdata/tableschema-sql-py
SummaryGenerate SQL tables, load and extract data, based on JSON Table Schema descriptors.
upload_time2023-07-19 17:46:56
maintainer
docs_urlNone
authorOpen Knowledge Foundation
requires_python
licenseMIT
keywords frictionless data
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # tableschema-sql-py

[![Travis](https://img.shields.io/travis/frictionlessdata/tableschema-sql-py/master.svg)](https://travis-ci.org/frictionlessdata/tableschema-sql-py)
[![Coveralls](http://img.shields.io/coveralls/frictionlessdata/tableschema-sql-py/master.svg)](https://coveralls.io/r/frictionlessdata/tableschema-sql-py?branch=master)
[![PyPi](https://img.shields.io/pypi/v/tableschema-sql.svg)](https://pypi.python.org/pypi/tableschema-sql)
[![Github](https://img.shields.io/badge/github-master-brightgreen)](https://github.com/frictionlessdata/tableschema-sql-py)
[![Gitter](https://img.shields.io/gitter/room/frictionlessdata/chat.svg)](https://gitter.im/frictionlessdata/chat)

Generate and load SQL tables based on [Table Schema](http://specs.frictionlessdata.io/table-schema/) descriptors.

## Features

- implements `tableschema.Storage` interface
- provides additional features like indexes and updating

## Contents

<!--TOC-->

  - [Getting Started](#getting-started)
    - [Installation](#installation)
  - [Documentation](#documentation)
  - [API Reference](#api-reference)
    - [`Storage`](#storage)
  - [Contributing](#contributing)
  - [Changelog](#changelog)

<!--TOC-->

## Getting Started

### Installation

The package use semantic versioning. It means that major versions  could include breaking changes. It's highly recommended to specify `package` version range in your `setup/requirements` file e.g. `package>=1.0,<2.0`.

```bash
pip install tableschema-sql
```

## Documentation

```python
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 Reference

### `Storage`
```python
Storage(self, engine, dbschema=None, prefix='', reflect_only=None, autoincrement=None)
```
SQL storage

Package implements
[Tabular Storage](https://github.com/frictionlessdata/tableschema-py#storage)
interface (see full documentation on the link):

![Storage](https://i.imgur.com/RQgrxqp.png)

> Only additional API is documented

__Arguments__
- __engine (object)__: `sqlalchemy` engine
- __dbschema (str)__: name of database schema
- __prefix (str)__: prefix for all buckets
- __reflect_only (callable)__:
        a boolean predicate to filter the list of table names when reflecting
- __autoincrement (str/dict)__:
        add autoincrement column at the beginning.
          - if a string it's an autoincrement column name
          - if a dict it's an autoincrements mapping with column
            names indexed by bucket names, for example,
            `{'bucket1': 'id', 'bucket2': 'other_id}`


#### `storage.create`
```python
storage.create(self, bucket, descriptor, force=False, indexes_fields=None)
```
Create bucket

__Arguments__
- __indexes_fields (str[])__:
        list of tuples containing field names, or list of such lists


#### `storage.write`
```python
storage.write(self, bucket, rows, keyed=False, as_generator=False, update_keys=None, buffer_size=1000, use_bloom_filter=True)
```
Write to bucket

__Arguments__
- __keyed (bool)__:
        accept keyed rows
- __as_generator (bool)__:
        returns generator to provide writing control to the client
- __update_keys (str[])__:
        update instead of inserting if key values match existent rows
- __buffer_size (int=1000)__:
        maximum number of rows to try and write to the db in one batch
- __use_bloom_filter (bool=True)__:
        should we use a bloom filter to optimize DB update performance
        (in exchange for some setup time)


## Contributing

> The project follows the [Open Knowledge International coding standards](https://github.com/okfn/coding-standards).

Recommended way to get started is to create and activate a project virtual environment.
To install package and development dependencies into active environment:

```bash
$ make install
```

To run tests with linting and coverage:

```bash
$ make test
```

## Changelog

Here described only breaking and the most important changes. The full changelog and documentation for all released versions could be found in nicely formatted [commit history](https://github.com/frictionlessdata/tableschema-sql-py/commits/master).

#### v1.3

- Implemented constraints loading to a database

#### v1.2

- Add option to configure buffer size, bloom filter use (#77)

#### v1.1

- Added support for the `autoincrement` parameter to be a mapping
- Fixed autoincrement support for SQLite and MySQL

#### v1.0

- Initial driver implementation.


            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/frictionlessdata/tableschema-sql-py",
    "name": "tableschema-sql",
    "maintainer": "",
    "docs_url": null,
    "requires_python": "",
    "maintainer_email": "",
    "keywords": "frictionless data",
    "author": "Open Knowledge Foundation",
    "author_email": "info@okfn.org",
    "download_url": "https://files.pythonhosted.org/packages/f2/45/93c77807b1f5acd375de6ee031c0be7be537e90bfdf625ddd9e0ed355e97/tableschema-sql-2.0.1.tar.gz",
    "platform": null,
    "description": "# tableschema-sql-py\n\n[![Travis](https://img.shields.io/travis/frictionlessdata/tableschema-sql-py/master.svg)](https://travis-ci.org/frictionlessdata/tableschema-sql-py)\n[![Coveralls](http://img.shields.io/coveralls/frictionlessdata/tableschema-sql-py/master.svg)](https://coveralls.io/r/frictionlessdata/tableschema-sql-py?branch=master)\n[![PyPi](https://img.shields.io/pypi/v/tableschema-sql.svg)](https://pypi.python.org/pypi/tableschema-sql)\n[![Github](https://img.shields.io/badge/github-master-brightgreen)](https://github.com/frictionlessdata/tableschema-sql-py)\n[![Gitter](https://img.shields.io/gitter/room/frictionlessdata/chat.svg)](https://gitter.im/frictionlessdata/chat)\n\nGenerate and load SQL tables based on [Table Schema](http://specs.frictionlessdata.io/table-schema/) descriptors.\n\n## Features\n\n- implements `tableschema.Storage` interface\n- provides additional features like indexes and updating\n\n## Contents\n\n<!--TOC-->\n\n  - [Getting Started](#getting-started)\n    - [Installation](#installation)\n  - [Documentation](#documentation)\n  - [API Reference](#api-reference)\n    - [`Storage`](#storage)\n  - [Contributing](#contributing)\n  - [Changelog](#changelog)\n\n<!--TOC-->\n\n## Getting Started\n\n### Installation\n\nThe package use semantic versioning. It means that major versions  could include breaking changes. It's highly recommended to specify `package` version range in your `setup/requirements` file e.g. `package>=1.0,<2.0`.\n\n```bash\npip install tableschema-sql\n```\n\n## Documentation\n\n```python\nfrom datapackage import Package \nfrom tableschema import Table\nfrom sqlalchemy import create_engine\n\n# Create sqlalchemy engine\nengine = create_engine('sqlite://')\n\n# Save package to SQL\npackage = Package('datapackage.json')\npackage.save(storage='sql', engine=engine)\n\n# Load package from SQL\npackage = Package(storage='sql', engine=engine)\npackage.resources\n```\n\n## API Reference\n\n### `Storage`\n```python\nStorage(self, engine, dbschema=None, prefix='', reflect_only=None, autoincrement=None)\n```\nSQL storage\n\nPackage implements\n[Tabular Storage](https://github.com/frictionlessdata/tableschema-py#storage)\ninterface (see full documentation on the link):\n\n![Storage](https://i.imgur.com/RQgrxqp.png)\n\n> Only additional API is documented\n\n__Arguments__\n- __engine (object)__: `sqlalchemy` engine\n- __dbschema (str)__: name of database schema\n- __prefix (str)__: prefix for all buckets\n- __reflect_only (callable)__:\n        a boolean predicate to filter the list of table names when reflecting\n- __autoincrement (str/dict)__:\n        add autoincrement column at the beginning.\n          - if a string it's an autoincrement column name\n          - if a dict it's an autoincrements mapping with column\n            names indexed by bucket names, for example,\n            `{'bucket1': 'id', 'bucket2': 'other_id}`\n\n\n#### `storage.create`\n```python\nstorage.create(self, bucket, descriptor, force=False, indexes_fields=None)\n```\nCreate bucket\n\n__Arguments__\n- __indexes_fields (str[])__:\n        list of tuples containing field names, or list of such lists\n\n\n#### `storage.write`\n```python\nstorage.write(self, bucket, rows, keyed=False, as_generator=False, update_keys=None, buffer_size=1000, use_bloom_filter=True)\n```\nWrite to bucket\n\n__Arguments__\n- __keyed (bool)__:\n        accept keyed rows\n- __as_generator (bool)__:\n        returns generator to provide writing control to the client\n- __update_keys (str[])__:\n        update instead of inserting if key values match existent rows\n- __buffer_size (int=1000)__:\n        maximum number of rows to try and write to the db in one batch\n- __use_bloom_filter (bool=True)__:\n        should we use a bloom filter to optimize DB update performance\n        (in exchange for some setup time)\n\n\n## Contributing\n\n> The project follows the [Open Knowledge International coding standards](https://github.com/okfn/coding-standards).\n\nRecommended way to get started is to create and activate a project virtual environment.\nTo install package and development dependencies into active environment:\n\n```bash\n$ make install\n```\n\nTo run tests with linting and coverage:\n\n```bash\n$ make test\n```\n\n## Changelog\n\nHere described only breaking and the most important changes. The full changelog and documentation for all released versions could be found in nicely formatted [commit history](https://github.com/frictionlessdata/tableschema-sql-py/commits/master).\n\n#### v1.3\n\n- Implemented constraints loading to a database\n\n#### v1.2\n\n- Add option to configure buffer size, bloom filter use (#77)\n\n#### v1.1\n\n- Added support for the `autoincrement` parameter to be a mapping\n- Fixed autoincrement support for SQLite and MySQL\n\n#### v1.0\n\n- Initial driver implementation.\n\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Generate SQL tables, load and extract data, based on JSON Table Schema descriptors.",
    "version": "2.0.1",
    "project_urls": {
        "Homepage": "https://github.com/frictionlessdata/tableschema-sql-py"
    },
    "split_keywords": [
        "frictionless",
        "data"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "f2205a8bf56cc40f102e2ff3ddeced440e81b83abfa4b49a9308305ec52e8764",
                "md5": "11d560899b0e9574025f1dc2382c9cf2",
                "sha256": "cf2da48bef2e7ad7d912cdcc0992c32d74a66cc900bf32809cfc89b647acd5d3"
            },
            "downloads": -1,
            "filename": "tableschema_sql-2.0.1-py2.py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "11d560899b0e9574025f1dc2382c9cf2",
            "packagetype": "bdist_wheel",
            "python_version": "py2.py3",
            "requires_python": null,
            "size": 12380,
            "upload_time": "2023-07-19T17:46:54",
            "upload_time_iso_8601": "2023-07-19T17:46:54.650939Z",
            "url": "https://files.pythonhosted.org/packages/f2/20/5a8bf56cc40f102e2ff3ddeced440e81b83abfa4b49a9308305ec52e8764/tableschema_sql-2.0.1-py2.py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "f24593c77807b1f5acd375de6ee031c0be7be537e90bfdf625ddd9e0ed355e97",
                "md5": "3fe6d4e301d125f96897441b1f3628e6",
                "sha256": "791140479b8f1acd75f381a96aa52b6d15edde1153531efb3451140fa1d88e4a"
            },
            "downloads": -1,
            "filename": "tableschema-sql-2.0.1.tar.gz",
            "has_sig": false,
            "md5_digest": "3fe6d4e301d125f96897441b1f3628e6",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 13597,
            "upload_time": "2023-07-19T17:46:56",
            "upload_time_iso_8601": "2023-07-19T17:46:56.234895Z",
            "url": "https://files.pythonhosted.org/packages/f2/45/93c77807b1f5acd375de6ee031c0be7be537e90bfdf625ddd9e0ed355e97/tableschema-sql-2.0.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-07-19 17:46:56",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "frictionlessdata",
    "github_project": "tableschema-sql-py",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "tableschema-sql"
}
        
Elapsed time: 0.09038s