給与管理システム新規作成
This commit is contained in:
72
backend/create_payroll_db.py
Normal file
72
backend/create_payroll_db.py
Normal file
@@ -0,0 +1,72 @@
|
||||
"""
|
||||
給与システムデータベース初期化スクリプト
|
||||
Payroll Database Initialization Script
|
||||
"""
|
||||
import psycopg
|
||||
import os
|
||||
from dotenv import load_dotenv
|
||||
|
||||
# 環境変数を読み込む
|
||||
load_dotenv()
|
||||
|
||||
# データベース接続文字列を構築
|
||||
DB_HOST = os.getenv("DB_HOST", "192.168.0.61")
|
||||
DB_PORT = os.getenv("DB_PORT", "55432")
|
||||
DB_NAME = os.getenv("DB_NAME", "njts_acct")
|
||||
DB_USER = os.getenv("DB_USER", "njts_app")
|
||||
DB_PASSWORD = os.getenv("DB_PASSWORD", "njts_app2025")
|
||||
|
||||
DATABASE_URL = f"postgresql://{DB_USER}:{DB_PASSWORD}@{DB_HOST}:{DB_PORT}/{DB_NAME}"
|
||||
|
||||
def create_payroll_database():
|
||||
"""SQLファイルを実行してデータベースを初期化"""
|
||||
|
||||
# SQLファイルのパスを取得
|
||||
import os
|
||||
script_dir = os.path.dirname(os.path.abspath(__file__))
|
||||
sql_file = os.path.join(script_dir, 'sql', 'payroll_schema_complete.sql')
|
||||
|
||||
# SQLファイルを読み込む
|
||||
with open(sql_file, 'r', encoding='utf-8') as f:
|
||||
sql_script = f.read()
|
||||
|
||||
try:
|
||||
# データベースに接続
|
||||
print(f"データベースに接続中: {DATABASE_URL}")
|
||||
conn = psycopg.connect(DATABASE_URL)
|
||||
|
||||
# トランザクションを開始
|
||||
with conn:
|
||||
with conn.cursor() as cur:
|
||||
# SQLスクリプトを実行
|
||||
print("SQLスクリプトを実行中...")
|
||||
cur.execute(sql_script)
|
||||
print("✅ データベースの初期化が完了しました!")
|
||||
|
||||
# テーブル一覧を確認
|
||||
cur.execute("""
|
||||
SELECT table_name
|
||||
FROM information_schema.tables
|
||||
WHERE table_schema = 'public'
|
||||
ORDER BY table_name
|
||||
""")
|
||||
tables = cur.fetchall()
|
||||
print("\n作成されたテーブル:")
|
||||
for table in tables:
|
||||
print(f" - {table[0]}")
|
||||
|
||||
# 保険料率データを確認
|
||||
cur.execute("SELECT COUNT(*) FROM insurance_rates")
|
||||
count = cur.fetchone()[0]
|
||||
print(f"\n保険料率データ: {count}件")
|
||||
|
||||
conn.close()
|
||||
print("\n✅ データベース初期化が正常に完了しました!")
|
||||
|
||||
except Exception as e:
|
||||
print(f"\n❌ エラーが発生しました: {e}")
|
||||
print(f"\nエラーの詳細: {type(e).__name__}")
|
||||
raise
|
||||
|
||||
if __name__ == "__main__":
|
||||
create_payroll_database()
|
||||
Reference in New Issue
Block a user