Simple SQLAlchemy connector manager.
Project description
Alchemynger
SQLAlchemy Connection Manager
Alchemynger is a versatile Python library that simplifies database connectivity and interaction using SQLAlchemy. It offers both synchronous and asynchronous database management for applications that require efficient database operations.
Installation
You can install Alchemynger using pip:
pip install alchemynger
Usage
SyncManager: Synchronous Database Operations
SyncManager is designed for traditional synchronous applications. Here's how to use it:
from alchemynger import SyncManager
from alchemynger.sqlalchemy import Column, String
# Create a SyncManager instance
manager = SyncManager('sqlite:///path/to/db')
# Define your SQLAlchemy model class
class User(manager.Base):
__tablename__ = 'user'
name = Column(String(30), primary_key=True)
# Connect to the database
manager.connect()
# Create an insert statement and execute it
stmt = manager[User].insert.values(name='username')
manager.execute(stmt, commit=True) # or manager(stmt, commit=True)
AsyncManager: Asynchronous Database Operations
AsyncManager is tailored for asyncio-based applications. Here's how to use it:
from asyncio import run
from alchemynger import AsyncManager
from alchemynger.sqlalchemy import Column, String
# Create an AsyncManager instance
manager = AsyncManager('sqlite+aiosqlite:///path/to/db')
# Define your SQLAlchemy model class
class User(manager.Base):
__tablename__ = 'user'
name = Column(String(30), primary_key=True)
# Define an async main function
async def main():
await manager.connect()
stmt = manager[User].insert.values(name='username')
await manager.execute(stmt, commit=True) # or await manager(stmt, commit=True)
if __name__ == "__main__":
run(main())
Selector: Useage
Selectors can be used with Columns, a Column, or the Table Model.
# Create a select statements with column or columns
manager[User.name].select
manager[User.name, User.any_col].select
# Create statements with model
manager[User].select
manager[User].delete
manager[User].insert
manager[User].update
then execute
# execute statement
manager.execute(stmt, scalars=False)
Native use of SQLAlchemy queries
You can also utilize the standard query-writing methods provided by SQLAlchemy, for example, if you find that the library's functionality is insufficient for your needs. Just user from sqlalchemy import select, insert, ...
or import from from alchemynger.sqlalchemy import select, insert
from alchemynger import SyncManager
from alchemynger.sqlalchemy import select, insert, Column
# Create a SyncManager instance
manager = SyncManager('sqlite:///path/to/db')
# Define your SQLAlchemy model class
class User(manager.Base):
__tablename__ = 'user'
name = Column(String(30), primary_key=True)
# Connect to the database
manager.connect()
# Create a select statement and execute it
stmt = select(User).where(User.id > 5)
manager.execute(stmt)
# Create an insert statement and execute it
stmt = insert(User).values(name="Lex")
manager.execute(stmt, commit=True) # or manager(stmt, commit=True)
Context Managers and Error Handling
Both SyncManager and AsyncManager provide context managers for managing database sessions. This ensures that sessions are properly closed, even in the event of an exception.
# Example using a context manager
with manager.get_session() as session:
stmt = manager[User].select
result = session.execute(stmt)
# Use the result
Contribution
Contributions to Alchemynger are welcome! If you have ideas for improvements, bug fixes, or new features, please open an issue or submit a pull request on the GitHub repository.
License
Alchemynger is licensed under the MIT License. See the LICENSE file for more 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
File details
Details for the file Alchemynger-0.1.5.3.tar.gz
.
File metadata
- Download URL: Alchemynger-0.1.5.3.tar.gz
- Upload date:
- Size: 7.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2670362ae7191b6208f16691e8609766abf5b22d710da32c558cd2be4e272ada |
|
MD5 | e385222e1443937a8ad4ce752b594892 |
|
BLAKE2b-256 | d034fdb6b54474e8c2872ab6c93e9a5bc35c000ec2cf19fe03f405be66f6d2ce |