.. image:: https://github.com/heavenshell/py-sqlalchemy_seed/workflows/build/badge.svg :target: https://github.com/heavenshell/py-sqlalchemy_seed/actions?query=workflow%3Abuild .. image:: https://pyup.io/repos/github/heavenshell/py-sqlalchemy_seed/python-3-shield.svg :target: https://pyup.io/repos/github/heavenshell/py-sqlalchemy_seed/ :alt: Python 3 .. image:: https://pyup.io/repos/github/heavenshell/py-sqlalchemy_seed/shield.svg :target: https://pyup.io/repos/github/heavenshell/py-sqlalchemy_seed/ :alt: Updates
sqlalchemy_seed
is a seed library which provides initial data to database using SQLAlchemy.
sqlalchemy_seed
is similar to Django fixtures <https://docs.djangoproject.com/ja/1.10/howto/initial-data/>
_.
.. code::
pip install sqlalchemy_seed
.. code::
/myapp init.py models.py /fixtures accounts.yaml
Model file.
.. code:: python
# -- coding: utf-8 --
from sqlalchemy import create_engine from sqlalchemy.exc import OperationalError from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import scoped_session, sessionmaker, relationship engine = create_engine('sqlite://', convert_unicode=True)
Base = declarative_base() Base.metadata.bind = engine Session = sessionmaker(autocommit=False, autoflush=False, bind=engine) session = scoped_session(Session)
class Account(Base): tablename = 'accounts'
id = Column(Integer, primary_key=True)
first_name = Column(String(100), nullable=False)
last_name = Column(String(100), nullable=False)
age = Column(Integer(), nullable=True)
Seed code.
.. code:: python
# -- coding: utf-8 --
from sqlalchemy_seed import ( create_table, drop_table, load_fixtures, load_fixture_files, ) from myapp.models import Base, session
def main(): path = '/path/to/fixtures' fixtures = load_fixture_files(path, ['accounts.yaml']) load_fixtures(session, fixtures)
if name == 'main': main()
Seed file.
.. code::
model: myapp.models.Account id: 1 fields: first_name: John last_name: Lennon age: 20
model: myapp.models.Account id: 2 fields: first_name: Paul last_name: McCartney age: 21
If you want idempotent, you can describe seed like followings.
Seed file.
.. code::
model: myapp.models.Account fields: id: 1 first_name: John last_name: Lennon age: 20
model: myapp.models.Account fields: id: 2 first_name: Paul last_name: McCartney age: 21
NEW BSD LICENSE.
This PR updates SQLAlchemy from 1.4.38 to 1.4.40.
The bot wasn't able to find a changelog for this release. Got an idea?
This PR updates flake8 from 3.9.2 to 5.0.4.
The bot wasn't able to find a changelog for this release. Got an idea?
This PR updates pyyaml from 5.4.1 to 6.0.
The bot wasn't able to find a changelog for this release. Got an idea?
This adds some support for creating sqlalchemy Table object inserts.
This is mainly to aid in the support of M2M relations in projects that use Table rather than Model.
The PR should be considered a WIP for now as I'd like some feedback on whether the approach is acceptable.
python sqlalchemy