Small and expressive ORM to interact with Google Datastore inspired by Django, Mongo-Engine and Peewee
Project description
No SeiQueLa ORM
IN DEVELOPMENT
No SeiQueLa is a small and expressive ORM (Object Relational Mapper) to interact with Google Datastore inspired by Django, Mongo-Engine and Peewee.
Requirements
- Google Cloud credentials
- Python>=3.8
Installing
The library can be installed using pip:
pip install noseiquela_orm
Usage
Creating model classes:
from noseiquela_orm.entity import Model
from noseiquela_orm.key import Key, ParentKey
from noseiquela_orm import properties
class Customer(Model):
name = properties.StringProperty(required=True)
age = properties.IntegerProperty(required=True)
is_deleted = properties.BooleanProperty(default=False, required=True)
class CustomerAddress(Model):
__kind__ = "Address"
__parent__ = properties.ParentKey(Customer, required=True)
number = properties.IntegerProperty(required=True)
address_one = properties.StringProperty(required=True)
address_two = properties.StringProperty()
is_default = properties.BooleanProperty(required=True)
is_deleted = properties.BooleanProperty(default=False, required=True)
In case the project name, namespace (or any other parameter of the google.cloud.datastore.Client
) needs to be changed, simply create a Meta
class inside the template with the desired information.
class Product(Model):
quantity = properties.IntegerProperty(required=True)
name = properties.StringProperty(required=True)
value = properties.FloatProperty(required=True)
class Meta:
namespace = "production"
project = "products"
Adding new entities:
new_customer = Customer(
name="Geraldo Castro",
age=29,
)
new_customer.save()
new_address = CustomerAddress(
parent_id=new_customer.id,
number=199,
address_one="Some St.",
is_default=True
)
new_address.save()
Query on database:
customer = Customer.query.filter(name="Geraldo Castro").first()
customer_address = Customer.query.filter(parend_id=customer.id)
less_than_or_eq_29 = Customer.query.filter(age__le=29) # age <= 29
more_than_30 = Customer.query.filter(age__gt=30) # age > 30
all_customers = [
customer.to_dict()
for customer in Customer.query.all()
]
Authentication
The library uses the standard way of authenticating Google libraries (google-auth-library-python).
The search for credentials happens in the following order:
-
If the environment variable
GOOGLE_APPLICATION_CREDENTIALS
is set to a valid service account path. -
If the
Google Cloud SDK
is installed and has the credentials of the application to be used, these will be loaded. -
If the application is running in the
App Engine standard environment
(first generation), then the credentials and project ID are taken from theApp Identity Service
. -
If the application is running in
Compute Engine
,Cloud Run
,App Engine flexible environment
orApp Engine standard environment
(second generation), then the credentials and project ID are taken from theMetadata Service
.
More details at this link.
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
File details
Details for the file noseiquela-orm-0.0.1.dev0.tar.gz
.
File metadata
- Download URL: noseiquela-orm-0.0.1.dev0.tar.gz
- Upload date:
- Size: 4.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.1 importlib_metadata/4.8.2 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | e0c676edc3b28fdd4ad01df510126fda42e4b2e218c1f768593e5af85d3254a0 |
|
MD5 | ffc7128ea212fa0061d9764372ac92e4 |
|
BLAKE2b-256 | e37ff2ce98861c8b6b596c217be83768eb85fbdf6057bf7872169c8447f6ebd1 |
File details
Details for the file noseiquela_orm-0.0.1.dev0-py3-none-any.whl
.
File metadata
- Download URL: noseiquela_orm-0.0.1.dev0-py3-none-any.whl
- Upload date:
- Size: 3.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.1 importlib_metadata/4.8.2 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2e9b0b7ee3b600e1a8aae2f1e25d4243829c6f04ed9e5d5d3f7565f2a0fa87ab |
|
MD5 | e7d7cba3e549e5a43501d39d6e8f4305 |
|
BLAKE2b-256 | accfc3f7a4766e0dda32f11ea3a9a24a8175d0b04d859ca5722656c83eb541c4 |