Update init_db.py

This commit is contained in:
2025-06-08 17:14:47 +02:00
parent 0f7c49e063
commit 9fcb9c358b

View File

@@ -4,32 +4,47 @@ from sqlalchemy import text
def init_db(): def init_db():
with app.app_context(): with app.app_context():
# First, try to create the section table if it doesn't exist
try: try:
# Try to run migrations first db.session.execute(text("""
upgrade() CREATE TABLE IF NOT EXISTS section (
id SERIAL PRIMARY KEY,
name VARCHAR(100) NOT NULL,
description TEXT,
icon VARCHAR(200)
)
"""))
db.session.commit()
print("Section table created or already exists")
except Exception as e: except Exception as e:
print(f"Migration error (this is normal if tables exist): {e}") print(f"Error creating section table: {e}")
db.session.rollback()
# Check if section_id column exists in plant table # Then try to add the section_id column if it doesn't exist
try: try:
result = db.session.execute(text("SELECT section_id FROM plant LIMIT 1")) # Check if column exists
print("section_id column exists") result = db.session.execute(text("""
except Exception: SELECT column_name
FROM information_schema.columns
WHERE table_name='plant' AND column_name='section_id'
"""))
if not result.fetchone():
print("Adding section_id column to plant table") print("Adding section_id column to plant table")
try:
# Add section_id column if it doesn't exist
db.session.execute(text(""" db.session.execute(text("""
ALTER TABLE plant ALTER TABLE plant
ADD COLUMN IF NOT EXISTS section_id INTEGER ADD COLUMN section_id INTEGER
REFERENCES section(id) REFERENCES section(id)
""")) """))
db.session.commit() db.session.commit()
print("Added section_id column successfully") print("Added section_id column successfully")
else:
print("section_id column already exists")
except Exception as e: except Exception as e:
print(f"Error adding section_id column: {e}") print(f"Error adding section_id column: {e}")
db.session.rollback() db.session.rollback()
# Create default admin user if it doesn't exist # Create default admin user if it doesn't exist
try:
admin = User.query.filter_by(username='admin').first() admin = User.query.filter_by(username='admin').first()
if not admin: if not admin:
admin = User(username='admin') admin = User(username='admin')
@@ -37,6 +52,9 @@ def init_db():
db.session.add(admin) db.session.add(admin)
db.session.commit() db.session.commit()
print("Default admin user created!") print("Default admin user created!")
except Exception as e:
print(f"Error creating admin user: {e}")
db.session.rollback()
if __name__ == '__main__': if __name__ == '__main__':
init_db() init_db()