Please read UPGRADE-v2.0.md
to learn how to upgrade to Graphene 2.0.
AlchQL
A SQLAlchemy integration for Graphene.
Installation
For instaling graphene, just run this command in your shell
pip install "alchql>=3.0"
Examples
Here is a simple SQLAlchemy model:
from sqlalchemy import Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class UserModel(Base):
__tablename__ = 'user'
id = Column(Integer, primary_key=True)
name = Column(String)
last_name = Column(String)
To create a GraphQL schema for it you simply have to write the following:
import graphene
from alchql import SQLAlchemyObjectType
class User(SQLAlchemyObjectType):
class Meta:
model = UserModel
# use `only_fields` to only expose specific fields ie "name"
# only_fields = ("name",)
# use `exclude_fields` to exclude specific fields ie "last_name"
# exclude_fields = ("last_name",)
class Query(graphene.ObjectType):
users = graphene.List(User)
def resolve_users(self, info):
query = await User.get_query(info) # SQLAlchemy query
return query.all()
schema = graphene.Schema(query=Query)
Then you can simply query the schema:
query = '''
query {
users {
name,
lastName
}
}
'''
result = schema.execute(query, context_value={'session': db_session})
You may also subclass SQLAlchemyObjectType by providing abstract = True in
your subclasses Meta:
from alchql import SQLAlchemyObjectType
import sqlalchemy as sa
import graphene
class ActiveSQLAlchemyObjectType(SQLAlchemyObjectType):
class Meta:
abstract = True
@classmethod
async def get_node(cls, info, id):
return (await cls.get_query(info)).filter(
sa.and_(
cls._meta.model.deleted_at == None,
cls._meta.model.id == id
)
).first()
class User(ActiveSQLAlchemyObjectType):
class Meta:
model = UserModel
class Query(graphene.ObjectType):
users = graphene.List(User)
def resolve_users(self, info):
query = await User.get_query(info) # SQLAlchemy query
return query.all()
schema = graphene.Schema(query=Query)
Full Examples
To learn more check out the following examples:
Metadata
Release files for alchql 3.4.5.35564656
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| alchql-3.4.5.35564656-py2.py3-none-any.whl | Python 3, Python 2 | none | any | Details |
Release files / alchql-3.4.5.35564656-py2.py3-none-any.whl
| Download URL | alchql-3.4.5.35564656-py2.py3-none-any.whl |
|---|---|
| Size | 51.3 kB |
| Tags | Python 2 Python 3 |
|
SHA-256 checksum How to use checksums |
165cd34b5b43a5d603c5d994b59dc37f6606e54534d3595132b171caa6478ffb
|
|
BLAKE2b-256 checksum How to use checksums |
5a67da0b2f713ad81e8a19dc3e9115ab9c091c162c33ecd19d797ef7b5bf53cd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.9.18
|