Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from flask import Flask
- from flask_sqlalchemy import SQLAlchemy
- db = SQLAlchemy()
- class User(db.Model):
- __tablename__ = 'users'
- id = db.Column(db.Integer, primary_key=True)
- name = db.Column(db.String, nullable=False)
- def __repr__(self):
- return self.name
- def get_or_parameter(self, name):
- p1 = self.parameters.filter(Parameter.name == name)
- print('======')
- print(p1.all())
- print('======')
- p2 = [x for x in self.parameters if x.name == name]
- print(p2)
- print('======')
- class Parameter(db.Model):
- __tablename__ = 'parameters'
- id = db.Column(db.Integer, primary_key=True)
- name = db.Column(db.String, nullable=False)
- value1 = db.Column(db.String, nullable=False)
- value2 = db.Column(db.String, nullable=False)
- user_id = db.Column(db.Integer, db.ForeignKey('users.id'))
- user = db.relationship(User, backref=db.backref('parameters',
- lazy='dynamic'))
- def __repr__(self):
- return 'Parameter({0}-{1})'.format(self.id, self.name)
- app = Flask(__name__)
- app.config['SQLALCHEMY_DATABASE_URI'] = 'postgres://flask:flask@localhost:5432/sample'
- app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
- db.app = app
- db.init_app(app)
- if __name__ == '__main__':
- db.drop_all()
- db.create_all()
- with db.session.no_autoflush:
- u = User(name='john', id=1) # Added id for mute SAWarning
- db.session.add(u)
- param_name = 'height'
- print('First run, should be empty in both cases')
- u.get_or_parameter(param_name)
- param = Parameter(name=param_name, user=u)
- db.session.add(param)
- print('Second run')
- u.get_or_parameter(param_name)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement