Skip to main content

SheetsORM

SheetsORM is a simple micro ORM extension for gspread.

Features:

  • Create a entity class for each worksheet
  • Columns are mapped to attributes
  • Repository: Add,Remove,Update operations
  • Type checking for attributes

Requirements

Python 3.9+

Installation

pip install sheetsorm

Basic usage

1.Create credentials in Google API Console

2.Creating an instance:

from sheetsorm.orm import SheetsORM

# Create a SheetsORM instance
gs = SheetsORM(scope=['https://spreadsheets.google.com/feeds','https://www.googleapis.com/auth/drive'],
        credentials_file='./credentials.json', # pass the path of the credentials file, or google drive URL 
        is_url=False, # True if the credentials file is a google drive URL
        spreadsheet_name='DEV' # pass the name of the spreadsheet
        )

# if the spread sheet is not found, it will be created
gs.connect()

# You should share the spreadsheet with your preferred email address
gs.share('your@email.com','user','owner')

3.Create a class for each worksheet:

from sheetsorm.decorators import entity, column
from datetime import datetime

# define the entity
# the worksheet name by default is the class name
@entity(worksheet='Kat')
class Kat:
    # our primary key auto_increment with non-nullable values
    # name defines the column name in the worksheet, by default it is the attribute name
    id = column(int,name='ID',primary_key=True,increment=True, required=True)
    # pass the length of the column as argument to 'str'
    name = column(str(200),name='NAME',required=True)
    # or use as a string 
    color = column('20',name='COLOR')


# the entity decorator add a new constructor that allows you to create an instance
# from key values
meow  = Kat(name='Meow',birth_date=datetime(2019,1,1),color='black')

repo = gs.get_repository(Kat)

# add the object
repo.add(meow)
# and then commit the changes
repo.commit()

# pass lambda function to filter the results
find_meow = repo.find(lambda x: x.name=='Meow')
if len(find_meow) == 1:
    print('I Found Meow')
    print(f'His id: {find_meow[0].id}')
    print(f'His name: {find_meow[0].name}')
    print(f'His birth date: {find_meow[0].birth_date}')
    print(f'His color: {find_meow[0].color}')
else:
    print('I did not find Meow')


meow = find_meow[0]
meow.name = 'Meow2'
# Runtime type checkings
# meow.color  = 1  # TypeError: color must be of type 'str'
repo.update(meow)
repo.commit()

# Remove the row from the worksheet
repo.remove()
repo.commit()

# Other functions to use:
# repo.all(lambda x: x.color=='orange')
# repo.any(lambda x: x.name=='Mr. Potato')

Metadata

Release files for sheetsorm 0.18.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for sheetsorm 0.18.3
File Size Uploaded
sheetsorm-0.18.3.tar.gz 9.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for sheetsorm 0.18.3
File Interpreter ABI Platform
sheetsorm-0.18.3-py3-none-any.whl Python 3 none any Details

Total release size: 19.7 kB

Release files / sheetsorm-0.18.3.tar.gz

Download URL sheetsorm-0.18.3.tar.gz
Size 9.8 kB
Tags Source
SHA-256 checksum
How to use checksums
9a7772ca74c3d41a3673d300e50628ef76830b3aed6834d6073119f92b9e46ea
BLAKE2b-256 checksum
How to use checksums
29b3add2ffc9a4b39d6f7102a4ec93ab2c5d69fd9903699b9a5061721d8a04c2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.6.0 importlib_metadata/4.8.2 pkginfo/1.8.1 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.5

Release files / sheetsorm-0.18.3-py3-none-any.whl

Download URL sheetsorm-0.18.3-py3-none-any.whl
Size 9.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d952f2c67547fe6b1b886a860d55f3f88223204011c73d9a93a499e2e31fb6aa
BLAKE2b-256 checksum
How to use checksums
d2fc278fb696011176c658c9383830b02a614170efd7c6fd5aced03855b696be
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.6.0 importlib_metadata/4.8.2 pkginfo/1.8.1 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.5

Release history Release notifications | RSS feed

This release

0.18.3 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page