Files
njts-accounting-core/backend/revert_precision.py
2026-01-20 11:15:49 +09:00

57 lines
1.6 KiB
Python

import os
import psycopg2
from dotenv import load_dotenv
# Load environment variables
root_env = os.path.join(os.path.dirname(os.path.dirname(__file__)), '.env')
load_dotenv(root_env)
# Connect to database
conn = psycopg2.connect(
host=os.getenv('DB_HOST', '192.168.0.61'),
port=os.getenv('DB_PORT', '55432'),
dbname=os.getenv('DB_NAME', 'njts_acct'),
user=os.getenv('DB_USER', 'njts_app'),
password=os.getenv('DB_PASSWORD')
)
cur = conn.cursor()
print("保険率カラムを DECIMAL(6,4) に戻しています...")
# Alter insurance_rates table back to DECIMAL(6,4)
cur.execute("""
ALTER TABLE insurance_rates
ALTER COLUMN employee_rate TYPE DECIMAL(6, 4),
ALTER COLUMN employer_rate TYPE DECIMAL(6, 4)
""")
# Alter child_support_contribution_rates table
cur.execute("""
ALTER TABLE child_support_contribution_rates
ALTER COLUMN contribution_rate TYPE DECIMAL(6, 4)
""")
conn.commit()
print("OK データベース変更完了")
# Verify
cur.execute("""
SELECT column_name, numeric_precision, numeric_scale
FROM information_schema.columns
WHERE table_name='insurance_rates'
AND column_name IN ('employee_rate', 'employer_rate')
ORDER BY column_name
""")
print("\n変更後:")
for row in cur.fetchall():
print(f" {row[0]}: numeric({row[1]},{row[2]})")
cur.close()
conn.close()
print("\nデータベースは DECIMAL(6,4) で、フロントエンドの表示を小数点以下3桁にします。")
print("これにより、4.955% のような値を正確に保存しつつ、表示は3桁に丸めることができます。")