This provides a set of SQLAlchemy ORM models for the ISPyB database.
Install from pypi ispyb-models:
pip install ispyb-modelsfrom ispyb import models
dataCollection = models.DataCollection(
...
)
ses.add(dataCollection)
ses.commit()
...
datacollections = (
ses.query(
models.DataCollection
).filter(models.DataCollection.dataCollectionId == 1)
).first()
)To update the models you need to run the workflow Update Models through GitHub Actions panel.
This will create a new branch with models matching the latest DB release and create a pull request for merge this branch into main. Before merging there are some things you need to do:
- Make sure py-ispyb tests still pass with these new models
- Update
HISTORY.mdto reflect the changes - Bump version number with
bump2version
The resulting _auto_db_schema.py should not be edited (other than automatic
formatting with black or sorting of imports with isort). All models are imported
into and accessed via the __init__.py. Any modifications, e.g. injecting additional
relationships between models should be done here.
Checkout the specific tag for a given ispyb-database version:
$ git clone -b v1.18.1 https://github.com/ispyb/ispyb-database.git
$ # or, if you have an existing copy of the repository:
$ git checkout v1.18.1Apply the schema patch in patches/circular_references.patch to avoid circular foreign key references:
$ patch -p1 < ispyb-models/patches/circular_references.patchThen run the ispyb-database build.sh script to generate the database:
$ sh build.shGenerate the models with sqlacodegen
in src/ispyb/models/:
. generate_models.sh