45 lines
1.3 KiB
Python
45 lines
1.3 KiB
Python
#!/usr/bin/env python3
|
|
"""Database initialization script"""
|
|
import asyncio
|
|
import asyncpg
|
|
|
|
async def init_database():
|
|
"""Initialize database with schema"""
|
|
|
|
# Read SQL file
|
|
with open('docker/init-db.sql', 'r') as f:
|
|
sql = f.read()
|
|
|
|
# Connect to database
|
|
conn = await asyncpg.connect(
|
|
host='shium.net',
|
|
port=55432,
|
|
user='stock',
|
|
password='Tjduddn!!12',
|
|
database='stock'
|
|
)
|
|
|
|
try:
|
|
# Split SQL into individual statements and execute one by one
|
|
statements = [s.strip() for s in sql.split(';') if s.strip()]
|
|
|
|
for statement in statements:
|
|
try:
|
|
await conn.execute(statement)
|
|
print(f"✅ Executed: {statement[:50]}...")
|
|
except Exception as e:
|
|
# Skip if already exists
|
|
if 'already exists' in str(e):
|
|
print(f"⚠️ Skipped (already exists): {statement[:50]}...")
|
|
else:
|
|
print(f"❌ Error: {e}")
|
|
|
|
print("\n✅ Database initialization completed!")
|
|
except Exception as e:
|
|
print(f"❌ Error initializing database: {e}")
|
|
finally:
|
|
await conn.close()
|
|
|
|
if __name__ == '__main__':
|
|
asyncio.run(init_database())
|