-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmodels.py
executable file
·50 lines (37 loc) · 1.4 KB
/
models.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
#!/usr/bin/env python
from sqlalchemy import Column
from sqlalchemy import Integer
from sqlalchemy import String
from sqlalchemy import DateTime
from sqlalchemy import ForeignKey
from sqlalchemy import Table
from sqlalchemy.orm import relationship
from sqlalchemy.ext.declarative import declarative_base
from datetime import datetime
from db import session
Base = declarative_base()
Base.query = session.query_property()
association_table = Table('association', Base.metadata,
Column('group_id', Integer, ForeignKey('groups.id')),
Column('user_id', Integer, ForeignKey('users.id')))
class User(Base):
__tablename__ = 'users'
id = Column(Integer, unique=True, primary_key=True)
name = Column(String(64))
email = Column(String(120))
def __repr__(self):
return '<User %r>' % self.name
class Group(Base):
__tablename__ = 'groups'
id = Column(Integer, unique=True, primary_key=True)
name = Column(String(64))
date_created = Column(DateTime, default=datetime.utcnow)
users = relationship("User", secondary=association_table)
def __repr__(self):
return '<Post %r>' % self.date_created
if __name__ == "__main__":
from sqlalchemy import create_engine
from config import SQLALCHEMY_DATABASE_URI
engine = create_engine(SQLALCHEMY_DATABASE_URI)
Base.metadata.drop_all(engine)
Base.metadata.create_all(engine)