SQLAlchemy dependency for nameko services
Project description
A SQLAlchemy dependency for nameko, enabling services to interface with a relational database.
Usage
from nameko_sqlalchemy import Session
from .models import Model, DeclarativeBase
class Service(object):
session = Session(DeclarativeBase)
@entrypoint
def write_to_db(self):
model = Model(...)
self.session.add(model)
self.session.commit()
@entrypoint
def query_db(self):
queryset = self.session.query(Model).filter(...)
...
Database drivers
You may use any database driver compatible with SQLAlchemy provided it is safe to use with eventlet. This will include all pure-python drivers. Known safe drivers are:
Pytest fixtures
Pytest fixtures to allow for easy testing are available.
db_session fixture (which depends on db_connection fixture) will instantiate test database and tear it down at the end of each test.
model_base fixture can be overridden to provide custom declarative_base.
db_engine_options fixture can be overriden to provide additional keyword arguments to sqlalchemy.create_engine.
import pytest
from sqlalchemy import Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
class Base(object):
pass
DeclarativeBase = declarative_base(cls=Base)
class User(DeclarativeBase):
__tablename__ = "users"
id = Column(Integer, primary_key=True)
name = Column(String)
@pytest.fixture(scope='session')
def model_base():
return DeclarativeBase
@pytest.fixture(scope='session')
def db_engine_options():
return dict(client_encoding='utf8')
def test_users(db_session):
user = User(id=1, name='Joe')
db_session.add(user)
db_session.commit()
saved_user = db_session.query(User).get(user.id)
assert saved_user.id > 0
assert saved_user.name == 'Joe'
When running tests you can pass database test url with --test-db-url parameter or override db_url fixture. By default SQLite memory database will be used.
py.test test --test-db-url=sqlite:///test_db.sql
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
File details
Details for the file nameko-sqlalchemy-0.1.0.tar.gz
.
File metadata
- Download URL: nameko-sqlalchemy-0.1.0.tar.gz
- Upload date:
- Size: 5.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7f16e74cfdd08154acbf31ee5b3cd694f23a0d040f654ae2bf2a0e95f89f25d2 |
|
MD5 | 6e5911aeb5dd86a0d695fd2ef68951b8 |
|
BLAKE2b-256 | 7f7fdcaffaa252a0e001df89dc6e8681829a2ee63727f5c1d195a20fc772243e |