request_token_params={'scope': 'email'}) # table with many-to-many relationships for quizzes and questions # following http://flask-sqlalchemy.pocoo.org/2.1/models/ # and https://techarena51.com/blog/many-to-many-relationships-with-flask-sqlalchemy/ quizz_questions = db.Table( 'quizz_questions', db.Column('quizz_id', db.Integer, db.ForeignKey('quizz.id'), nullable=False), db.Column('question_id', db.Integer, db.ForeignKey('question.id'), nullable=False), db.PrimaryKeyConstraint('quizz_id', 'question_id')) class Quizz(db.Model): id = db.Column(db.Integer, primary_key=True) title = db.Column(db.Text) pub_date = db.Column(db.DateTime) user_id = db.Column(db.Integer, db.ForeignKey('user.id')) questions = db.relationship('Question', secondary=quizz_questions, backref=db.backref('quizzes', lazy='dynamic')) def __init__(self, user, title): self.user = user self.title = title self.pub_date = datetime.utcnow()
user = User.query.get(data['id']) if user and user.can_login(): return user def __repr__(self): return self.email def __hash__(self): return hash(self.email) group_banned_user = db.Table( # Secondary Table for many-to-many mapping 'groups_banned_users', db.Column('group_id', db.String(32), db.ForeignKey('groups.id')), db.Column('user_id', db.String(32), db.ForeignKey('users.id')), db.PrimaryKeyConstraint('group_id', 'user_id')) class GroupUserAssociation(db.Model ): # Association Object for many-to-many mapping __tablename__ = 'groups_users_association' group_id = db.Column(db.String(32), db.ForeignKey('groups.id'), primary_key=True) user_id = db.Column(db.String(32), db.ForeignKey('users.id'), primary_key=True) manager = db.Column(db.Boolean, default=False) owner = db.Column(db.Boolean, default=False) user = db.relationship("User", back_populates="groups") group = db.relationship("Group", back_populates="users")
class Tags(db.Model): """ Tags table """ __tablename__ = 'tags' id = db.Column(db.Integer, primary_key=True) tag = db.Column(db.String, unique=True, nullable=False) def __repr__(self): return '%s' % self.tag tags_joiner = db.Table( 'tags_joiner', db.Column('tag_id', db.Integer, db.ForeignKey('tags.id')), db.Column('mediaitem_id', db.Integer, db.ForeignKey('media_item.id')), db.PrimaryKeyConstraint('tag_id', 'mediaitem_id')) class MediaItem(db.Model): """ The model that media items (videos, pictures etc) are parented from """ __tablename__ = "media_item" id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String, unique=True) about = db.Column(db.String) date_published = db.Column(db.Date) licence = db.Column(db.Integer, db.ForeignKey('licence.id')) postcard = db.Column(db.Integer, db.ForeignKey('postcard.id')) tags = db.relationship('Tags', secondary=tags_joiner,
from flask.ext.sqlalchemy import SQLAlchemy from sqlalchemy.exc import SQLAlchemyError from marshmallow import Schema, fields, validate from flask.ext.login import UserMixin db = SQLAlchemy() # Relationships user_roles=db.Table('user_roles', db.Column('user_id', db.Integer,db.ForeignKey('users.id'), nullable=False), db.Column('role_id',db.Integer,db.ForeignKey('roles.id'),nullable=False), db.PrimaryKeyConstraint('user_id', 'role_id') ) class UserRoles(): def __init__(self,user_id,role_id): self.user_id=user_id self.role_id=role_id db.mapper(UserRoles, user_roles) class Users(db.Model, UserMixin): id = db.Column(db.Integer, primary_key=True) email = db.Column(db.String(250), unique=True, nullable=False) name = db.Column(db.String(250), nullable=False) password = db.Column(db.String(250), nullable=False) is_enabled = db.Column(db.Boolean(), nullable=False, server_default='False') roles = db.relationship('Roles', secondary='user_roles', backref=db.backref('users', lazy='dynamic'))
from flask import Flask from flask.ext.sqlalchemy import SQLAlchemy flask_app = Flask(__name__) SQLALCHEMY_DATABASE_URI='postgresql://*****:*****@localhost:5432/database' db = SQLAlchemy(app) relationship_table=db.Table('relationship_table', db.Column('post_id', db.Integer,db.ForeignKey('posts.id'), nullable=False), db.Column('tags_id',db.Integer,db.ForeignKey('tags.id'),nullable=False), db.PrimaryKeyConstraint('post_id', 'tags_id') ) class Posts(db.Model): id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String(255),nullable=False) content = db.Column(db.Text) tags=db.relationship('Tags', secondary=relationship_table, backref='posts' ) class Tags(db.Model): id=db.Column(db.Integer, primary_key=True) name=db.Column(db.String, unique=True, nullable=False) description=db.Column(db.Text) """ from flask_main import app from flask_sqlalchemy import * # from sqlalchemy import Table, Column, Integer, String # from sqlalchemy.orm import mapper # from yourapplication.database import metadata, db_session
from flask.ext.sqlalchemy import SQLAlchemy from sqlalchemy.exc import SQLAlchemyError from marshmallow import Schema, fields, validate from flask.ext.login import UserMixin db = SQLAlchemy() # Relationships user_roles = db.Table( 'user_roles', db.Column('user_id', db.Integer, db.ForeignKey('users.id'), nullable=False), db.Column('role_id', db.Integer, db.ForeignKey('roles.id'), nullable=False), db.PrimaryKeyConstraint('user_id', 'role_id')) class UserRoles(): def __init__(self, user_id, role_id): self.user_id = user_id self.role_id = role_id db.mapper(UserRoles, user_roles) class Users(db.Model, UserMixin): id = db.Column(db.Integer, primary_key=True) email = db.Column(db.String(250), unique=True, nullable=False) name = db.Column(db.String(250), nullable=False) password = db.Column(db.String(250), nullable=False)
@app.teardown_appcontext def shutdown_session(exception=None): db.session.remove() # ------------------------------------------------ # Database Models # ------------------------------------------------ group_linking = db.Table( 'group_linking', db.Column('group_id', db.Integer, db.ForeignKey('group.id'), nullable=False), db.Column('user_id', db.Integer, db.ForeignKey('user.id'), nullable=False), db.PrimaryKeyConstraint('group_id', 'user_id')) group_instance = db.Table( 'group_instances', db.Column('group_id', db.Integer, db.ForeignKey('group.id'), nullable=False), db.Column('instance_id', db.Integer, db.ForeignKey('instance.id'), nullable=False), db.PrimaryKeyConstraint('group_id', 'instance_id')) class Instance(db.Model):