Flask-SQLAlchemy項目實戰

項目目錄結構如下:

Flask-SQLAlchemy

    sansa

             views

                       account.py

              __init__.py

             models.py

    create_table.py

    run.py

    settings.py

代碼如下:

settings.py


class BaseConfig(object):
    SQLALCHEMY_DATABASE_URI = "mssql+pyodbc://sa:Nuctech_50@dsn_name"
    SQLALCHEMY_POOL_SIZE = 5
    SQLALCHEMY_POOL_TIMEOUT = 30
    SQLALCHEMY_POOL_RECYCLE = -1
    #追蹤對象的修改並且發送信號
    SQLALCHEMY_TRACK_MODIFICATIONS = False


class ProductionConfig(BaseConfig):
    pass

class DevelopmentConfig(BaseConfig):
    pass

class TestingConfig(BaseConfig):
    pass

run.py

from sansa import create_app
app = create_app()

if __name__ == '__main__':
    app.run()

create_table.py

from sansa import create_app
from sansa import db

app = create_app()
with app.app_context():
    db.create_all()

sansa/__init__.py

from flask import  Flask
from flask_sqlalchemy import SQLAlchemy

db = SQLAlchemy()

from .models import *#需要導入,且放在db下面,因爲models文件中需要引入db,from . import db
from .views import account

def create_app():
    app = Flask(__name__)
    app.config.from_object('settings.DevelopmentConfig')

    #將db註冊到app中
    db.init_app(app)

    #註冊藍圖
    app.register_blueprint(account.account)

    return  app

sansa/models.py


from . import db

class Users(db.Model):
    __tablename__ = 'users'
    id = db.Column(db.Integer,primary_key=True)
    username = db.Column(db.String(80),unique=True,nullable=False)
    email = db.Column(db.String(120),unique=True,nullable=False)

    def __repr__(self):
        return '<User %r>'%self.username

sansa/views/account.py

from flask import Blueprint

from .. import db
from .. import models

account = Blueprint('account',__name__)

@account.route("/login")
def login():
    # db.session.add(models.Users(username='alex',email="[email protected]"))
    # db.session.commit()
    # db.session.close()

    user_list = db.session.query(models.Users).all()
    db.session.close()
    for item in user_list:
        print(item.username,item.email)
    return "login"

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章