-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDatabase.py
72 lines (53 loc) · 1.85 KB
/
Database.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
from sqlalchemy import *
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import relationship
from sqlalchemy.orm.session import sessionmaker
Base = declarative_base()
engine = create_engine('sqlite:////Users/drastogi/restaurant.db', echo=True)
Session = sessionmaker(bind=engine)
restaurant_owner = Table('restaurant_owner', Base.metadata,
Column('restaurant_id', Integer, ForeignKey('restaurant.id')),
Column('owner_id', Integer, ForeignKey('owner.id'))
)
def delete_restaurant(id):
return "delete from restaurant_owner where restaurant_id="+id
def delete_owner(id):
return "delete from restaurant_owner where owner_id="+id
class Restaurant(Base):
__tablename__ = 'restaurant'
id = Column(Integer, primary_key=True, autoincrement=True)
name = Column(String)
address = Column(String)
owners = relationship("Owner", secondary=restaurant_owner)
@property
def serialize(self):
return {
'id': self.id,
'name': self.name,
'address': self.address,
'owners': self.serialize_owners
}
@property
def serialize_owners(self):
return [owner.serialize for owner in self.owners]
class Owner(Base):
__tablename__ = 'owner'
id = Column(Integer, primary_key=True, autoincrement=True)
name = Column(String)
age = Column(Integer)
gender = Column(String)
def __init__(self, name, age, gender):
self.name = name
self.age = age
self.gender = gender
@property
def serialize(self):
return {
'id': self.id,
'name': self.name,
'age': self.age,
'gender': self.gender
}
if __name__ == "__main__":
Base.metadata.drop_all(engine)
Base.metadata.create_all(engine)