added functionality that creates tables (from code generated by sqlacodegen) inside the databse if it is empty when opened
This commit is contained in:
parent
2f29aa4ff6
commit
dfe728fdc8
@ -5,4 +5,14 @@ db = SQLAlchemy()
|
||||
def init_db(app):
|
||||
db.init_app(app)
|
||||
with app.app_context():
|
||||
db.reflect()
|
||||
print(f"number of db tables is {len(db.metadata.tables)}")
|
||||
|
||||
# populate an empty DB with fresh tables
|
||||
#TODO: maybe add tables to metadata in any case since tables won't get overwritten
|
||||
if not len(db.metadata.tables):
|
||||
from the_works.tables import add_tables
|
||||
add_tables(db.metadata)
|
||||
db.metadata.create_all(db.engine)
|
||||
print(f"and now number of db tables is {len(db.metadata.tables)}")
|
||||
|
||||
db.reflect()
|
||||
|
||||
123
the_works/tables.py
Normal file
123
the_works/tables.py
Normal file
@ -0,0 +1,123 @@
|
||||
# File content is based on the output of `sqlacodegen --generator tables sqlite:///path/to/the_works.sqlite`
|
||||
|
||||
from sqlalchemy import Column, ForeignKey, Integer, LargeBinary, MetaData, Table, Text
|
||||
|
||||
def add_tables(metadata):
|
||||
t_Genre = Table(
|
||||
'Genre', metadata,
|
||||
Column('ID', Integer, primary_key=True),
|
||||
Column('Genre', Text, nullable=False)
|
||||
)
|
||||
|
||||
t_Herausgeber = Table(
|
||||
'Herausgeber', metadata,
|
||||
Column('ID', Integer, primary_key=True),
|
||||
Column('Name', Text, nullable=False)
|
||||
)
|
||||
|
||||
t_Pseudonym = Table(
|
||||
'Pseudonym', metadata,
|
||||
Column('ID', Integer, primary_key=True),
|
||||
Column('Pseudonym', Text, nullable=False)
|
||||
)
|
||||
|
||||
t_Sprache = Table(
|
||||
'Sprache', metadata,
|
||||
Column('ID', Integer, primary_key=True),
|
||||
Column('Sprache', Text, nullable=False)
|
||||
)
|
||||
|
||||
t_Textform = Table(
|
||||
'Textform', metadata,
|
||||
Column('ID', Integer, primary_key=True),
|
||||
Column('Textform', Text, nullable=False)
|
||||
)
|
||||
|
||||
t_Titelbild = Table(
|
||||
'Titelbild', metadata,
|
||||
Column('ID', Integer, primary_key=True),
|
||||
Column('Mimetype', Text, nullable=False),
|
||||
Column('Dateiname', Text, nullable=False),
|
||||
Column('Dateigroesse', Integer, nullable=False),
|
||||
Column('Breite', Integer, nullable=False),
|
||||
Column('Hoehe', Integer, nullable=False),
|
||||
Column('Bild', LargeBinary, nullable=False),
|
||||
Column('Thumbnail', LargeBinary, nullable=False),
|
||||
Column('sha256', Text, nullable=False, unique=True)
|
||||
)
|
||||
|
||||
t_Verlag = Table(
|
||||
'Verlag', metadata,
|
||||
Column('ID', Integer, primary_key=True),
|
||||
Column('Verlag', Text, nullable=False)
|
||||
)
|
||||
|
||||
t_Werksform = Table(
|
||||
'Werksform', metadata,
|
||||
Column('ID', Integer, primary_key=True),
|
||||
Column('Werksform', Text, nullable=False)
|
||||
)
|
||||
|
||||
t_Reihe = Table(
|
||||
'Reihe', metadata,
|
||||
Column('ID', Integer, primary_key=True),
|
||||
Column('Titel', Text, nullable=False),
|
||||
Column('Verlag', ForeignKey('Verlag.ID'))
|
||||
)
|
||||
|
||||
t_Text = Table(
|
||||
'Text', metadata,
|
||||
Column('ID', Integer, primary_key=True),
|
||||
Column('Titel', Text, nullable=False),
|
||||
Column('Untertitel', Text),
|
||||
Column('Reihe', ForeignKey('Reihe.ID')),
|
||||
Column('Textform', ForeignKey('Textform.ID')),
|
||||
Column('Sprache', ForeignKey('Sprache.ID'))
|
||||
)
|
||||
|
||||
t_Werk = Table(
|
||||
'Werk', metadata,
|
||||
Column('ID', Integer, primary_key=True),
|
||||
Column('Titel', Text, nullable=False),
|
||||
Column('Untertitel', Text),
|
||||
Column('Werksform', ForeignKey('Werksform.ID')),
|
||||
Column('Verlag', ForeignKey('Verlag.ID')),
|
||||
Column('Reihe', ForeignKey('Reihe.ID')),
|
||||
Column('Reihennummer', Text),
|
||||
Column('Erscheinungsdatum', Text),
|
||||
Column('ISBN_13', Text),
|
||||
Column('ISBN_10', Text),
|
||||
Column('ISSN', Text),
|
||||
Column('Preis', Text),
|
||||
Column('Titelbild', ForeignKey('Titelbild.ID')),
|
||||
Column('Klappentext', Text),
|
||||
Column('Anmerkungen', Text)
|
||||
)
|
||||
|
||||
t_Text_Genre = Table(
|
||||
'Text_Genre', metadata,
|
||||
Column('Text', ForeignKey('Text.ID'), primary_key=True),
|
||||
Column('Genre', ForeignKey('Genre.ID'), primary_key=True)
|
||||
)
|
||||
|
||||
t_Veroeffentlichung = Table(
|
||||
'Veroeffentlichung', metadata,
|
||||
Column('ID', Integer, primary_key=True),
|
||||
Column('Text', ForeignKey('Text.ID'), nullable=False),
|
||||
Column('Werk', ForeignKey('Werk.ID'), nullable=False),
|
||||
Column('AltTitel', Text),
|
||||
Column('AltUntertitel', Text),
|
||||
Column('Pseudonym', ForeignKey('Pseudonym.ID'), nullable=False)
|
||||
)
|
||||
|
||||
t_Werk_Genre = Table(
|
||||
'Werk_Genre', metadata,
|
||||
Column('Werk', ForeignKey('Werk.ID'), primary_key=True),
|
||||
Column('Genre', ForeignKey('Genre.ID'), primary_key=True)
|
||||
)
|
||||
|
||||
t_Werk_Herausgeber = Table(
|
||||
'Werk_Herausgeber', metadata,
|
||||
Column('Herausgeber', ForeignKey('Herausgeber.ID'), primary_key=True),
|
||||
Column('Werk', ForeignKey('Werk.ID'), primary_key=True)
|
||||
)
|
||||
Loading…
Reference in New Issue
Block a user