A database-like interface for Google Sheets
Project description
Google Sheets as Backend (GSAB)
A Python library that enables using Google Sheets as a database backend with features like schema validation and encryption.
Features
- 🔒 Secure Google Sheets integration with OAuth2
- 📊 Schema validation and type checking
- 🔐 Field-level encryption for sensitive data
- 🌐 Async/await support
- 📝 Comprehensive logging
Installation
pip install gsheets-db
Quick Start
-
Set up Google Cloud Project and enable Google Sheets API:
- Go to Google Cloud Console
- Create a new project or select existing one
- Enable Google Sheets API
- Create OAuth 2.0 credentials
- Download credentials JSON file
-
Set up environment variables:
GOOGLE_CREDENTIALS_PATH=/path/to/credentials.json
ENCRYPTION_KEY=your-encryption-key
- Basic Usage:
from gsab import SheetConnection, Schema, Field, FieldType, SheetManager
# Define your schema
schema = Schema("users", [
Field("id", FieldType.INTEGER, required=True, unique=True),
Field("email", FieldType.STRING, required=True),
Field("password", FieldType.STRING, required=True, encrypted=True)
])
# Connect and use
async def main():
connection = SheetConnection()
await connection.connect()
sheet_manager = SheetManager(connection, schema)
# Create a new sheet
sheet = await sheet_manager.create_sheet("Users Data")
# Insert data
await sheet_manager.insert({
"id": 1,
"email": "user@example.com",
"password": "secretpass123" # Will be automatically encrypted
})
Schema Definition
Define your data structure with type checking and validation:
from gsab import Schema, Field, FieldType, ValidationRule
schema = Schema("users", [
Field("id", FieldType.INTEGER, required=True, unique=True),
Field("email", FieldType.STRING, required=True),
Field("age", FieldType.INTEGER, min_value=0, max_value=150),
Field("password", FieldType.STRING, required=True, encrypted=True)
])
Security Features
Field Encryption
Sensitive data is automatically encrypted when the field is marked with encrypted=True:
# Fields marked as encrypted will be automatically handled
schema = Schema("users", [
Field("ssn", FieldType.STRING, encrypted=True),
Field("credit_card", FieldType.STRING, encrypted=True)
])
License
This project is licensed under the MIT License - see the LICENSE.md file for details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file gsab-0.1.0.tar.gz.
File metadata
- Download URL: gsab-0.1.0.tar.gz
- Upload date:
- Size: 15.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f7b77aa8ea0c67fd54e29fb3cf4a69e0966412cc18ef7bdc5dfa04dc199e1f4e
|
|
| MD5 |
d75d79e04af76e762f1659775efb6cdf
|
|
| BLAKE2b-256 |
671fb4a2a3aa9384746780b142043898729a59e518ac08e3ff45a4ecb5d1672d
|
File details
Details for the file gsab-0.1.0-py3-none-any.whl.
File metadata
- Download URL: gsab-0.1.0-py3-none-any.whl
- Upload date:
- Size: 17.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b8552ff1e9255f30ff562a38c7729c1d92ed8659b72d468132f08e6409d6e304
|
|
| MD5 |
092ae83e53c8266c553be644734522c3
|
|
| BLAKE2b-256 |
68a7e8a413a9f2afe0663363aeee855504b4d4652522e361369fc084bda27bca
|