Metadata-Version: 2.1
Name: sheet2db
Version: 1.0.0
Summary: A tiny library for one-way syncing the Google spreadsheet to database
Home-page: https://github.com/mingrammer/sheet2db
Author: mingrammer
Author-email: mingrammer@gmail.com
License: UNKNOWN
Keywords: spreadsheet sync
Platform: UNKNOWN
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.3
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Topic :: Utilities
Classifier: Topic :: Software Development :: Libraries
Requires-Python: >=3
Description-Content-Type: text/markdown
Requires-Dist: asn1crypto (==0.24.0)
Requires-Dist: cachetools (==2.1.0)
Requires-Dist: cffi (==1.11.5)
Requires-Dist: cryptography (==2.3)
Requires-Dist: google-api-python-client (==1.7.4)
Requires-Dist: google-auth-httplib2 (==0.0.3)
Requires-Dist: google-auth (==1.5.1)
Requires-Dist: httplib2 (==0.11.3)
Requires-Dist: idna (==2.7)
Requires-Dist: oauth2client (==4.1.2)
Requires-Dist: pyasn1-modules (==0.2.2)
Requires-Dist: pyasn1 (==0.4.4)
Requires-Dist: pycparser (==2.18)
Requires-Dist: pymysql (==0.9.2)
Requires-Dist: rsa (==3.4.2)
Requires-Dist: six (==1.11.0)
Requires-Dist: uritemplate (==3.0.0)


# Sheet2db

Sheet2db is a tiny python library for one-way syncing the Google spreadsheet to database. (Currently, it supports only MySQL)

It is useful for managing some static data on Google spreadsheet, but also want to sync the sheet data to database.

***Sheet2db DOES NOT collect any your secret values!***

# Installation

```
pip install sheet2db
```

# Usage

> You must have API key which is accessible to Google Spreadsheet API

Example sheet format (**items** tab):

````
===========================
|  A |    B |     C |   D |
===========================
| id | name | count | ver |
|----|------|-------|-----|
| .. | .... | ..... | ... |
===========================
````

Following example will sync **items** tab of **1U3un2ZJPRhLrWzc2DMXq8VI7Nqf9pYlajfO4mQVCZpE** spreadsheet to database:

> "AIzaSyC6pabjqmaPiguYoHbq4W7a0DV0wQg5JGk" is a fake api key

```python
from sheet2db import Sheet2db

# Pass API key
syncer = Sheet2db(api_key='AIzaSyC6pabjqmaPiguYoHbq4W7a0DV0wQg5JGk')

# If you need to access to private spreadsheet, you can't use API key. Use oauth credentials instead.
syncer = Sheet2db(
    creds_path='credentials.json',
    token_path='token.json')

# Fetch data from spreadsheet
syncer.fetch(
    sheet='1U3un2ZJPRhLrWzc2DMXq8VI7Nqf9pYlajfO4mQVCZpE',
    tab='items',
    range='A1:D')

# Sync fetched data to database (mysql)
syncer.sync(
    host='192.168.168.10',
    port=3306,
    user='mingrammer',
    password='p@ssw0rd',
    db='static',
    table='items')
```

You can also use ssh tunneling to access to remote database with **sshtunnel**

```python
with sshtunnel.SSHTunnelForwarder(
    ('db.service.io', 22),
    ssh_username='ssh_user'
    ssh_pkey='~/.ssh/id_rsa'
    ssh_private_key_password='ssh_pk_password',
    remote_bind_address=('localhost', 3306),
) as tunnel:
    syncer.sync(
        host = tunnel.local_bind_host,
        port = tunnel.local_bind_host,
        user = 'mingrammer',
        password = 'p@ssw0rd',
        db = 'static',
        table = 'items')
```

# License

MIT


