python - Flask-Security: how to set up the database outside the main py file? -
i'm using flask-security 1.7.4 flask 0.10.1.
i have no problem running website if database scheme stored in python file app.py
:
from flask.ext.security import rolemixin, usermixin, sqlalchemyuserdatastore, security flask.ext.sqlalchemy import sqlalchemy app = flask(__name__) #create database connection object db = sqlalchemy(app) #define models roles_users = db.table('roles_users', db.column('user_id', db.integer(), db.foreignkey('user.id')), db.column('role_id', db.integer(), db.foreignkey('role.id'))) class role(db.model, rolemixin): id = db.column(db.integer(), primary_key=true) name = db.column(db.string(80), unique=true) description = db.column(db.string(255)) class user(db.model, usermixin): id = db.column(db.integer, primary_key=true) email = db.column(db.string(255), unique=true) companyid = db.column(db.string(255), unique=true) lastname = db.column(db.string(255)) firstname = db.column(db.string(255)) password = db.column(db.string(255)) active = db.column(db.boolean()) confirmed_at = db.column(db.datetime()) roles = db.relationship('role', secondary=roles_users, backref=db.backref('users', lazy='dynamic')) # setup flask-security user_datastore = sqlalchemyuserdatastore(db, user, role) security = security(app, user_datastore)
however separate more code can have:
app_folder |__ app.py # main file app |__ security.py # file contain database login/roles
so tried:
in security.py
:
db = sqlalchemy() # define models roles_users = db.table( 'roles_users', db.column('user_id', db.integer(), db.foreignkey('user.id')), db.column('role_id', db.integer(), db.foreignkey('role.id')) ) class role(db.model, rolemixin): id = db.column(db.integer(), primary_key=true) name = db.column(db.string(80), unique=true) description = db.column(db.string(255)) class user(db.model, usermixin): id = db.column(db.integer, primary_key=true) email = db.column(db.string(255), unique=true) companyid = db.column(db.string(255), unique=true) lastname = db.column(db.string(255)) firstname = db.column(db.string(255)) password = db.column(db.string(255)) active = db.column(db.boolean()) confirmed_at = db.column(db.datetime()) roles = db.relationship('role', secondary=roles_users, backref=db.backref('users', lazy='dynamic')) user_datastore = sqlalchemyuserdatastore(db, user, role)
and in app.py
:
from flask.ext.security import rolemixin, usermixin, sqlalchemyuserdatastore, security flask.ext.sqlalchemy import sqlalchemy security import db, user_datastore app = flask(__name__) #initiate database connection object db.init_app(app) # setup flask-security security = security(app, user_datastore)
and i'm getting next errors:
file "c:\work\pythonvirtualenv\env02\lib\site-packages\sqlalchemy\engine\default.py", line 436, in do_execute cursor.execute(statement, parameters) operationalerror: (operationalerror) no such table: users u'select users.user_id users_user_id, users.username users_username, users.password users_password, users.email users_email, users.registered_on users_registered_on \nfrom users \nwhere users.password = ? , users.email = ?\n limit ? offset ?' (u'test', u'demo@demo.com', 1, 0)
the things is, if maintain code in app.py
works flawlessly. , of course of study database exists.
can please tell me i'm doing wrong?
thanks :)
you should utilize different construction (and advised one):
proj_folder - run.py - config.py |__ app # main folder app |__ __init__.py |__ models.py |__ security.py |__ views.py
on models maintain app models on security maintain security models on views create views , expose urls
then on init.py
import logging flask import flask flask.ext.appbuilder import sqla flask.ext.appbuilder import appbuilder sqlalchemy import sqlalchemy logging.basicconfig(format='%(asctime)s:%(levelname)s:%(name)s:%(message)s') logging.getlogger().setlevel(logging.debug) app = flask(__name__) app.config.from_object('config') db = sqlalchemy(app) app import models, security, views
on run.py
from app import app app.run(host='0.0.0.0', port=8080, debug=true)
hope helps
take @ https://github.com/dpgaspar/flask-appbuilder-skeleton
python flask flask-security
No comments:
Post a Comment