Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from flask import Flask
- from flask.ext.sqlalchemy import SQLAlchemy
- from sqlalchemy import ForeignKey, UniqueConstraint, DateTime
- from sqlalchemy.orm import relationship, backref
- app = Flask(__name__)
- app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////tmp/test.db'
- db = SQLAlchemy(app)
- class User(db.Model):
- __tablename__ = 'user'
- pk_id = db.Column(db.Integer, primary_key=True)
- active = db.Column(db.Boolean(), nullable=False, default=False)
- username = db.Column(db.String(50), nullable=False, unique=True)
- password = db.Column(db.String(255), nullable=False, default='')
- class BookCategoryLink(db.Model):
- __tablename__ = 'book_category_link'
- book_id = db.Column(
- db.Integer, ForeignKey('book.pk_id'), primary_key=True
- )
- category_id = db.Column(
- db.Integer, ForeignKey('category.pk_id'), primary_key=True
- )
- class Category(db.Model):
- __tablename__ = 'category'
- pk_id = db.Column(db.Integer, primary_key=True, unique=True)
- category_title = db.Column(db.String(50))
- books = relationship(
- 'Book', secondary=BookCategoryLink.__table__,
- backref=backref('categories')
- )
- def __init__(self, category_title):
- self.category_title = category_title
- class Book(db.Model):
- __tablename__ = 'book'
- pk_id = db.Column(db.Integer, primary_key=True)
- book_name = db.Column(db.String(256))
- def __init__(self, book_name):
- self.book_name = book_name
- class Rating(db.Model):
- __tablename__ = 'rating'
- __table_args__ = (UniqueConstraint('user_id', 'book_id'),)
- id = db.Column(db.Integer, primary_key=True)
- user_id = db.Column(db.Integer, ForeignKey('user.pk_id'))
- book_id = db.Column(db.Integer, ForeignKey('book.pk_id'))
- user = relationship('User', backref=backref('ratings'))
- book = relationship('Book', backref=backref('ratings'))
- # genre, mood, plot, etc.
- genre = db.Column(db.String(50))
- plot = db.Column(db.String(50))
- mood = db.Column(db.String(50))
- pub_date = db.Column(db.DateTime)
- db.create_all()
- user = User(active=True, username='test', password='test')
- db.session.add(user)
- horror = Category('Horror')
- fantasy = Category('Fantasy')
- the_shining = Book('The Shining')
- the_shining.categories.append(horror)
- the_shining.categories.append(fantasy)
- db.session.add(the_shining)
- rating = Rating(
- user=user, book=the_shining,
- )
- db.session.add(rating)
- db.session.commit()
- db.session.close()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement