首页 > 数据库技术 > 详细

Flask_SQLAlchemy

时间:2019-03-19 14:27:34      阅读:140      评论:0      收藏:0      [点我收藏+]

SQLAlchemy项目基础实例

项目结构:

  技术分享图片

 __init__.py

  
from flask import Flask
  from flask_sqlalchemy import SQLAlchemy
  from .views.admin import admin
  from .views.shop import shop
  db = SQLAlchemy()
  from .models import  *
  def create_app():
      app = Flask(__name__, template_folder=templates, static_folder=statics, static_url_path=/static)
      # 导入配置文件(以类的形式导入)
      app.config.from_object("settings.TsetSesstings")
      # 将db注册到app中(在内部读取配置文件)
      db.init_app(app)
      #注册蓝图
      app.register_blueprint(admin)
      app.register_blueprint(shop)
      return app

 


run.py
# 程序入口
from flask_app import create_app
app = create_app()

if __name__ == __main__:
    app.run()

 

 
settings.py
# 这是配置文件

# 测试配置
class TsetSesstings(): DEBUG = True TESTING = True SECRET_KEY = "djcishcnieodkscj9codscojsojcd0ojc" ‘‘‘ 数据库连接配置 SQLALCHEMY_DATABASE_URI‘, ‘sqlite:///:memory:‘ SQLALCHEMY_BINDS‘, None SQLALCHEMY_NATIVE_UNICODE‘, None SQLALCHEMY_ECHO‘, False SQLALCHEMY_RECORD_QUERIES‘, None SQLALCHEMY_POOL_SIZE‘, None SQLALCHEMY_POOL_TIMEOUT‘, None SQLALCHEMY_POOL_RECYCLE‘, None SQLALCHEMY_MAX_OVERFLOW‘, None SQLALCHEMY_COMMIT_ON_TEARDOWN‘, False ‘‘‘ SQLALCHEMY_DATABASE_URI = mysql+pymysql://root:密码@localhost:3306/数据库名 SQLALCHEMY_POOL_SIZE = 5 SQLALCHEMY_POOL_TIMEOUT = 30 SQLALCHEMY_POOL_RECYCLE = -1 # 追踪对象的修改并且发送信号 SQLALCHEMY_TRACK_MODIFICATIONS = False
# 正式配置
class FormalSettings(): DEBUG = False TESTING = False SECRET_KEY = "xfsec@admin!2019(shuijizifuchuan)" #数据库连接
  SQLALCHEMY_DATABASE_URI = ‘mysql+pymysql://root:密码@localhost:3306/数据库名‘
   SQLALCHEMY_POOL_SIZE = 5 
  SQLALCHEMY_POOL_TIMEOUT
= 30
  SQLALCHEMY_POOL_RECYCLE
= -1
  # 追踪对象的修改并且发送信号
  SQLALCHEMY_TRACK_MODIFICATIONS = False
 models.py
from . import db
class Users1(db.Model):
    __tablename__ = "users"
    id  = db.Column(db.Integer,primary_key=True)
    username = db.Column(db.String(50),nullable=False,unique=True)
    email = db.Column(db.String(150), nullable=False, unique=True)
    def __repr__(self):
        return "<Users %r>" %self.username

 

crcate_tables.py 
# 这是一个创建数据库表的脚本
from flask_app import db
from flask_app import create_app

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

 

admin.py 
from flask import Blueprint
from flask import render_template
from flask import request

# 创建app应用
# url_prefix : 路由拼接
# template_folder : 模板路径
admin= Blueprint(admin, __name__, url_prefix=/admin, template_folder=templates)
# 每次请求进来时的操作
@admin.before_request
def process_request(*args, **kwargs):
‘‘‘
判断用户是否登陆
‘‘‘
if request.path == "/admin_dingding_xfsec/login":
print("登录页面不需要登陆!!!")
return None
else:
print("后台每次请求进来时都会执行这个函数")


#每次请求结束时的操作(必须加return 否则会报错!!!)
@admin.after_request
def process_response(response):
print("后台每次请求结束后都会执行这个函数")
return response

@admin.route(‘/login‘, methods=[‘GET‘, "POST"])
def login():
if request.method == "GET":
return "前端登录页面!!!"
else:
pass


@admin.route(‘/index‘, methods=[‘GET‘, "POST"])
def index():
if request.method == "GET":
return "前端首页!!!"
else:
pass

 

 shop.py
from flask import Blueprint
from flask import render_template
from flask import request

‘‘‘
前端管理函数处理
使用蓝图
创建蓝图实例
创建路由
函数处理
‘‘‘
shop = Blueprint(shop, __name__, template_folder=templates)
# 每次请求进来时的操作
@shop.before_request
def process_request(*args, **kwargs):
    print("前端每次请求进来时都会执行这个函数")


# 每次请求结束时的操作(必须加return 否则会报错!!!)
@shop.after_request
def process_response(response):
    print("前端每次请求结束后都会执行这个函数")
    return response

@shop.route(/login, methods=[GET, "POST"])
def login():
    if request.method == "GET":
        return "前端登录页面!!!"
    else:
        pass


@shop.route(/index, methods=[GET, "POST"])
def index():
    if request.method == "GET":
        return "前端首页!!!"
    else:
        pass

 

 

 

 


  

Flask_SQLAlchemy

原文:https://www.cnblogs.com/xingxingnbsp/p/10558219.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!