Python package for eventsourcing with SQLAlchemy.
Project description
Event Sourcing in Python with SQLAlchemy
This package supports using the Python eventsourcing library with SQLAlchemy.
Table of contents
- Table of contents
- Quick start
- Installation
- Getting started
- Google Cloud SQL Python Connector
- More information
Quick start
To use SQLAlchemy with your Python eventsourcing applications:
- install the Python package
eventsourcing_sqlalchemy
- set the environment variable
PERSISTENCE_MODULE
to'eventsourcing_sqlalchemy'
- set the environment variable
SQLALCHEMY_URL
to an SQLAlchemy database URL
See below for more information.
Installation
Use pip to install the stable distribution from the Python Package Index. Please note, it is recommended to install Python packages into a Python virtual environment.
$ pip install eventsourcing_sqlalchemy
Getting started
Define aggregates and applications in the usual way.
from eventsourcing.application import Application
from eventsourcing.domain import Aggregate, event
from uuid import uuid5, NAMESPACE_URL
class TrainingSchool(Application):
def register(self, name):
dog = Dog(name)
self.save(dog)
def add_trick(self, name, trick):
dog = self.repository.get(Dog.create_id(name))
dog.add_trick(trick)
self.save(dog)
def get_tricks(self, name):
dog = self.repository.get(Dog.create_id(name))
return dog.tricks
class Dog(Aggregate):
@event('Registered')
def __init__(self, name):
self.name = name
self.tricks = []
@staticmethod
def create_id(name):
return uuid5(NAMESPACE_URL, f'/dogs/{name}')
@event('TrickAdded')
def add_trick(self, trick):
self.tricks.append(trick)
To use this module as the persistence module for your application, set the environment
variable PERSISTENCE_MODULE
to 'eventsourcing_sqlalchemy'
.
When using this module, you need to set the environment variable SQLALCHEMY_URL
to an
SQLAlchemy database URL for your database.
Please refer to the SQLAlchemy documentation
for more information about SQLAlchemy Database URLs.
import os
os.environ['PERSISTENCE_MODULE'] = 'eventsourcing_sqlalchemy'
os.environ['SQLALCHEMY_URL'] = 'sqlite:///:memory:'
Construct and use the application in the usual way.
school = TrainingSchool()
school.register('Fido')
school.add_trick('Fido', 'roll over')
school.add_trick('Fido', 'play dead')
tricks = school.get_tricks('Fido')
assert tricks == ['roll over', 'play dead']
Google Cloud SQL Python Connector
You can set the environment variable SQLALCHEMY_CONNECTION_CREATOR_TOPIC
to a topic
that will resolve to a callable that will be used to create database connections.
For example, you can use the Cloud SQL Python Connector in the following way.
First install the Cloud SQL Python Connector package from PyPI.
$ pip install 'cloud-sql-python-connector[pg8000]'
Then define a getconn()
function, following the advice in the Cloud SQL
Python Connector README page.
from google.cloud.sql.connector import Connector
# initialize Connector object
connector = Connector()
# function to return the database connection
def get_google_cloud_sql_conn():
return connector.connect(
"project:region:instance",
"pg8000",
user="postgres-iam-user@gmail.com",
db="my-db-name",
enable_iam_auth=True,
)
Set the environment variable 'SQLALCHEMY_CONNECTION_CREATOR_TOPIC'
, along with
'PERSISTENCE_MODULE'
and 'SQLALCHEMY_URL'
.
from eventsourcing.utils import get_topic
os.environ['PERSISTENCE_MODULE'] = 'eventsourcing_sqlalchemy'
os.environ['SQLALCHEMY_URL'] = 'postgresql+pg8000://'
os.environ['SQLALCHEMY_CONNECTION_CREATOR_TOPIC'] = get_topic(get_google_cloud_sql_conn)
More information
See the library's documentation and the SQLAlchemy project for more information.
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 eventsourcing_sqlalchemy-0.5.tar.gz
.
File metadata
- Download URL: eventsourcing_sqlalchemy-0.5.tar.gz
- Upload date:
- Size: 11.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.3.2 CPython/3.10.9 Darwin/22.5.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | cc048258919baeabd5b66744b10d77f2b8f491893348d3f4d3c37bb8f19ea1ff |
|
MD5 | df848f70b81f2e1319546b17722afe9d |
|
BLAKE2b-256 | fe2aa5b39fac3f146b3151d794adeae0e3729ec22185228fd905d29539a1528a |
File details
Details for the file eventsourcing_sqlalchemy-0.5-py3-none-any.whl
.
File metadata
- Download URL: eventsourcing_sqlalchemy-0.5-py3-none-any.whl
- Upload date:
- Size: 10.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.3.2 CPython/3.10.9 Darwin/22.5.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | ad799c6e44c8365a3d475b2a3d3d34419d4afa5ba7a2349f85f242717fed2067 |
|
MD5 | 832b9eb30617aca4509fc0de5a1e50f7 |
|
BLAKE2b-256 | 7cf20d819165d56581bbc0f022e8e7a424a64c38ec3e4dc8ec2251356c52d160 |