69 lines
1.9 KiB
Python
69 lines
1.9 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(7,5) に変更中...")
|
|
print("これにより、4.955% (0.04955) のような値を正確に保存できます。")
|
|
|
|
# Alter insurance_rates table to DECIMAL(7,5)
|
|
cur.execute("""
|
|
ALTER TABLE insurance_rates
|
|
ALTER COLUMN employee_rate TYPE DECIMAL(7, 5),
|
|
ALTER COLUMN employer_rate TYPE DECIMAL(7, 5)
|
|
""")
|
|
|
|
# Alter child_support_contribution_rates table
|
|
cur.execute("""
|
|
ALTER TABLE child_support_contribution_rates
|
|
ALTER COLUMN contribution_rate TYPE DECIMAL(7, 5)
|
|
""")
|
|
|
|
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変更後の insurance_rates カラム:")
|
|
for row in cur.fetchall():
|
|
print(f" {row[0]}: numeric({row[1]},{row[2]})")
|
|
|
|
cur.execute("""
|
|
SELECT column_name, numeric_precision, numeric_scale
|
|
FROM information_schema.columns
|
|
WHERE table_name='child_support_contribution_rates'
|
|
AND column_name = 'contribution_rate'
|
|
""")
|
|
|
|
print("\n変更後の child_support_contribution_rates カラム:")
|
|
for row in cur.fetchall():
|
|
print(f" {row[0]}: numeric({row[1]},{row[2]})")
|
|
|
|
cur.close()
|
|
conn.close()
|
|
|
|
print("\n完了!")
|
|
print("これで 4.955% を入力すると、0.04955 として正確に保存され、4.955% と表示されます。")
|