In [1]:
from sqlalchemy import create_engine
from AlertaDengue import settings
import pandas as pd
In [2]:
db_conf = {
'u': settings.PSQL_USER,
'h': settings.PSQL_HOST,
'p': settings.PSQL_PASSWORD,
'n': settings.PSQL_DB,
}
In [3]:
dsn = 'postgresql://%(u)s:%(p)s@%(h)s/%(n)s' % db_conf
engine = create_engine(dsn)
In [4]:
SQL = ''
sql = ''
df = pd.read_csv('../../alerta_dengue_files/regional-saude.csv', na_values='NA')
for i, row in df.iterrows():
sql += '''
UPDATE "Dengue_global".regional_saude
SET varcli='%s', tcrit=%s, ucrit=%s
WHERE municipio_geocodigo=%s;
''' % (row['varcli'], row['tcrit'], row['ucrit'], row['municipio_geocodigo'])
update_sql = sql.replace('nan', 'NULL')
print(update_sql[:1000], '...')
In [5]:
with engine.connect() as conn:
# remove duplicated register
sql = 'DELETE FROM "Dengue_global".regional_saude WHERE id=1746;'
conn.execute(sql)
print('delete done.')
SQL += sql
# alter table
try:
sql = '''
ALTER TABLE "Dengue_global".regional_saude
ADD CONSTRAINT regional_saude_uq_municipio_geocodigo UNIQUE (municipio_geocodigo)
'''
SQL += sql
conn.execute(sql)
print('unique added done.')
except Exception as e:
print(e)
try:
sql = '''
ALTER TABLE "Dengue_global".regional_saude
ADD COLUMN varcli VARCHAR(10) NULL;
'''
SQL += sql
conn.execute(sql)
print('varcli added.')
except Exception as e:
print(e)
try:
sql = '''
ALTER TABLE "Dengue_global".regional_saude
ADD COLUMN tcrit DOUBLE PRECISION NULL;
'''
SQL += sql
conn.execute(sql)
print('tcrit added.')
except Exception as e:
print(e)
try:
sql = '''
ALTER TABLE "Dengue_global".regional_saude
ADD COLUMN ucrit DOUBLE PRECISION NULL;
'''
SQL += sql
conn.execute(sql)
print('ucrit added.')
except Exception as e:
print(e)
try:
SQL += update_sql
conn.execute(update_sql)
print('update done')
except Exception as e:
print(e)
In [6]:
with open('/tmp/dump.sql', 'w') as f:
f.write(SQL)