GraphViz used to render diagram. Should be installed. GraphViz
import graph as grp
if __name__ == '__main__':
diag = grp.diagram()
diag.add_table( \
name = "Person", \
keys = ["ID"], \
fields = ["Name","Family"], \
links = ["Person.ID-Car.PersonID","Person.ID-House.PersonID"] \
)
diag.add_table( \
name = "Car", \
keys = ["ID"], \
fields = ["PersonID","CarType"], \
links = [] \
)
diag.add_table( \
name = "House", \
keys = ["ID"], \
fields = ["PersonID","Price","Rooms","Meters"], \
links = [] \
)
diag.draw_diagram()
pass
Data file example. Types are not obligatory:
- person:
- keys:
- id, int
- fields:
- name, varchar
- family, varchar
- links:
- person.id-car.personid
- person.id-house.personid
- car:
- keys:
- id, int
- fields:
- personid, int
- cartype, varchar
- color, varchar
- house:
- keys:
- id, int
- fields:
- personid, int
- price, numeric
- rooms, int
- inches, numeric
Python code:
import graph as grp
import yaml
if __name__ == '__main__':
diag = grp.diagram()
diag.import_yaml(r'base.yaml')
diag.draw_diagram()
Result:
All types must be introduced
import graph as grp
import yaml
if __name__ == '__main__':
diag = grp.diagram()
diag.import_yaml(r'base.yaml')
diag.to_postgres()
Result in file "create_sql.sql":
CREATE TABLE person
(
id integer primary key,
name varchar (255),
family varchar (255)
);
CREATE TABLE car
(
id integer primary key,
personid integer,
cartype varchar (255),
color varchar (255)
);
CREATE TABLE house
(
id integer primary key,
personid integer,
price numeric (15,5),
rooms integer,
inches numeric (15,5)
);