131 lines
4.8 KiB
Python
131 lines
4.8 KiB
Python
import psycopg as pg
|
|
|
|
sql_create = [
|
|
"script/sql/create/0.base.sql",
|
|
"script/sql/create/1.title.sql",
|
|
"script/sql/create/2.junctions.sql",
|
|
"script/sql/create/3.reservoirs.sql",
|
|
"script/sql/create/4.tanks.sql",
|
|
"script/sql/create/5.pipes.sql",
|
|
"script/sql/create/6.pumps.sql",
|
|
"script/sql/create/7.valves.sql",
|
|
"script/sql/create/8.tags.sql",
|
|
"script/sql/create/9.demands.sql",
|
|
"script/sql/create/10.status.sql",
|
|
"script/sql/create/11.patterns.sql",
|
|
"script/sql/create/12.curves.sql",
|
|
"script/sql/create/13.controls.sql",
|
|
"script/sql/create/14.rules.sql",
|
|
"script/sql/create/15.energy.sql",
|
|
"script/sql/create/16.emitters.sql",
|
|
"script/sql/create/17.quality.sql",
|
|
"script/sql/create/18.sources.sql",
|
|
"script/sql/create/19.reactions.sql",
|
|
"script/sql/create/20.mixing.sql",
|
|
"script/sql/create/21.times.sql",
|
|
"script/sql/create/22.report.sql",
|
|
"script/sql/create/23.options.sql",
|
|
"script/sql/create/24.coordinates.sql",
|
|
"script/sql/create/25.vertices.sql",
|
|
"script/sql/create/26.labels.sql",
|
|
"script/sql/create/27.backdrop.sql",
|
|
"script/sql/create/28.end.sql",
|
|
"script/sql/create/29.scada_device.sql",
|
|
"script/sql/create/30.scada_device_data.sql",
|
|
"script/sql/create/31.scada_element.sql",
|
|
"script/sql/create/32.region.sql",
|
|
"script/sql/create/33.dma.sql",
|
|
"script/sql/create/34.sa.sql",
|
|
"script/sql/create/35.vd.sql",
|
|
"script/sql/create/36.wda.sql",
|
|
"script/sql/create/37.history_patterns_flows.sql",
|
|
"script/sql/create/38.scada_info.sql",
|
|
"script/sql/create/39.users.sql",
|
|
"script/sql/create/40.scheme_list.sql",
|
|
"script/sql/create/extension_data.sql",
|
|
"script/sql/create/operation.sql"
|
|
]
|
|
|
|
sql_drop = [
|
|
"script/sql/drop/operation.sql",
|
|
"script/sql/drop/extension_data.sql",
|
|
"script/sql/drop/40.scheme_list.sql",
|
|
"script/sql/drop/39.users.sql",
|
|
"script/sql/drop/38.scada_info.sql",
|
|
"script/sql/drop/37.history_patterns_flows.sql",
|
|
"script/sql/drop/36.wda.sql",
|
|
"script/sql/drop/35.vd.sql",
|
|
"script/sql/drop/34.sa.sql",
|
|
"script/sql/drop/33.dma.sql",
|
|
"script/sql/drop/32.region.sql",
|
|
"script/sql/drop/31.scada_element.sql",
|
|
"script/sql/drop/30.scada_device_data.sql",
|
|
"script/sql/drop/29.scada_device.sql",
|
|
"script/sql/drop/28.end.sql",
|
|
"script/sql/drop/27.backdrop.sql",
|
|
"script/sql/drop/26.labels.sql",
|
|
"script/sql/drop/25.vertices.sql",
|
|
"script/sql/drop/24.coordinates.sql",
|
|
"script/sql/drop/23.options.sql",
|
|
"script/sql/drop/22.report.sql",
|
|
"script/sql/drop/21.times.sql",
|
|
"script/sql/drop/20.mixing.sql",
|
|
"script/sql/drop/19.reactions.sql",
|
|
"script/sql/drop/18.sources.sql",
|
|
"script/sql/drop/17.quality.sql",
|
|
"script/sql/drop/16.emitters.sql",
|
|
"script/sql/drop/15.energy.sql",
|
|
"script/sql/drop/14.rules.sql",
|
|
"script/sql/drop/13.controls.sql",
|
|
"script/sql/drop/12.curves.sql",
|
|
"script/sql/drop/11.patterns.sql",
|
|
"script/sql/drop/10.status.sql",
|
|
"script/sql/drop/9.demands.sql",
|
|
"script/sql/drop/8.tags.sql",
|
|
"script/sql/drop/7.valves.sql",
|
|
"script/sql/drop/6.pumps.sql",
|
|
"script/sql/drop/5.pipes.sql",
|
|
"script/sql/drop/4.tanks.sql",
|
|
"script/sql/drop/3.reservoirs.sql",
|
|
"script/sql/drop/2.junctions.sql",
|
|
"script/sql/drop/1.title.sql",
|
|
"script/sql/drop/0.base.sql"
|
|
]
|
|
|
|
def create_template():
|
|
with pg.connect(conninfo="dbname=postgres host=127.0.0.1", autocommit=True) as conn:
|
|
with conn.cursor() as cur:
|
|
cur.execute("create database project")
|
|
with pg.connect(conninfo="dbname=project host=127.0.0.1") as conn:
|
|
with conn.cursor() as cur:
|
|
cur.execute('create extension postgis cascade')
|
|
cur.execute('create extension pgrouting cascade')
|
|
for sql in sql_create:
|
|
with open(sql, "r", encoding="utf-8") as f:
|
|
cur.execute(f.read())
|
|
print(f'executed {sql}')
|
|
conn.commit()
|
|
|
|
def have_template():
|
|
with pg.connect(conninfo="dbname=postgres host=127.0.0.1", autocommit=True) as conn:
|
|
with conn.cursor() as cur:
|
|
cur.execute("select * from pg_database where datname = 'project'")
|
|
return cur.rowcount > 0
|
|
|
|
def delete_template():
|
|
with pg.connect(conninfo="dbname=project host=127.0.0.1") as conn:
|
|
with conn.cursor() as cur:
|
|
for sql in sql_drop:
|
|
with open(sql, "r", encoding="utf-8") as f:
|
|
cur.execute(f.read())
|
|
print(f'executed {sql}')
|
|
conn.commit()
|
|
with pg.connect(conninfo="dbname=postgres host=127.0.0.1", autocommit=True) as conn:
|
|
with conn.cursor() as cur:
|
|
cur.execute("drop database project")
|
|
|
|
if __name__ == "__main__":
|
|
if (have_template()):
|
|
delete_template()
|
|
create_template()
|