14,flask-sqlalchemy项目配置
基于一个flask项目,加入flask-SQLAlchemy
1.加入falsk-sqlalchemy第三方组件
- from flask import Flask
- # 导入Flask-SQLAlchemy中的SQLAlchemy
- from flask_sqlalchemy import SQLAlchemy
- # 实例化SQLAlchemy
- db = SQLAlchemy()
- # PS : 实例化SQLAlchemy的代码必须要在引入蓝图之前
- from .views.users import user
- def create_app():
- app = Flask(__name__)
- # 初始化App配置 这个app配置就厉害了,专门针对 SQLAlchemy 进行配置
- # SQLALCHEMY_DATABASE_URI 配置 SQLAlchemy 的链接字符串儿
- app.config["SQLALCHEMY_DATABASE_URI"] = "mysql+pymysql://root:DragonFire@127.0.0.1:3306/dragon?charset=utf8"
- # SQLALCHEMY_POOL_SIZE 配置 SQLAlchemy 的连接池大小
- app.config["SQLALCHEMY_POOL_SIZE"] =
- # SQLALCHEMY_POOL_TIMEOUT 配置 SQLAlchemy 的连接超时时间
- app.config["SQLALCHEMY_POOL_TIMEOUT"] =
- app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False
- # 初始化SQLAlchemy , 本质就是将以上的配置读取出来
- db.init_app(app)
- app.register_blueprint(user)
- return app
- MyApp/__init__.py
- MyApp/__init__.py
__init__.py
2.建立models.py ORM模型文件
- from MyApp import db
- Base = db.Model # 这句话你是否还记的?
- # from sqlalchemy.ext.declarative import declarative_base
- # Base = declarative_base()
- # 每一次我们在创建数据表的时候都要做这样一件事
- # 然而Flask-SQLAlchemy已经为我们把 Base 封装好了
- # 建立User数据表
- class Users(Base): # Base实际上就是 db.Model
- __tablename__ = "users"
- __table_args__ = {"useexisting": True}
- # 在SQLAlchemy 中我们是导入了Column和数据类型 Integer 在这里
- # 就和db.Model一样,已经封装好了
- id = db.Column(db.Integer,primary_key=True)
- username = db.Column(db.String())
- password = db.Column(db.String())
- if __name__ == '__main__':
- from MyApp import create_app
- app = create_app()
- # 这里你要回顾一下Flask应该上下文管理了
- # 离线脚本:
- with app.app_context():
- db.drop_all()
- db.create_all()
- MyApp/models.py
- MyApp/models.py
models.py
3.登录视图函数的应用
- from flask import Blueprint, request, render_template
- user = Blueprint("user", __name__)
- from MyApp.models import Users
- from MyApp import db
- @user.route("/login",methods=["POST","GET"])
- def user_login():
- if request.method == "POST":
- username = request.form.get("username")
- password = request.form.get("password")
- # 还记不记得我们的
- # from sqlalchemy.orm import sessionmaker
- # Session = sessionmaker(engine)
- # db_sesson = Session()
- # 现在不用了,因为 Flask-SQLAlchemy 也已经为我们做好会话打开的工作
- # 我们在这里做个弊:
- db.session.add(Users(username=username,password=password))
- db.session.commit()
- # 然后再查询,捏哈哈哈哈哈
- user_info = Users.query.filter(Users.username == username and User.password == password).first()
- print(user_info.username)
- if user_info:
- return f"登录成功{user_info.username}"
- return render_template("login.html")
- MyApp/views/user.py
- MyApp/views/user.py
views
其实Flask-SQLAlchemy比起SQLAlchemy更加的简单自如,用法几乎一模一样,就是在配置和启动上需要注意与Flask的配合就好啦
14,flask-sqlalchemy项目配置的更多相关文章
- Flask之项目配置,目录构建,闪现
综合案例:学生成绩管理 新建项目目录students,并创建虚拟环境 mkvirtualenv students 安装开发中使用的依赖模块 pip install flask==0.12.4pip i ...
- 【flask】flask项目配置 app.config
[理论] 在很多情况下,你需要设置程序的某些行为,这时你就需要使用配置变量.在Flask中,配置变量就是一些大写形式的Python变量, 你也可以称之为配置参数或配置键.使用统一的配置变量可以避免在程 ...
- flask 案例项目基本框架的搭建
综合案例:学生成绩管理项目搭建 一 新建项目目录students,并创建虚拟环境 mkvirtualenv students 二 安装开发中使用的依赖模块 pip install flask==0.1 ...
- flask SQLAlchemy中一对多的关系实现
SQLAlchemy是Python中比较优秀的orm框架,在SQLAlchemy中定义了多种数据库表的对应关系, 其中一对多是一种比较常见的关系.利用flask sqlalchemy实现一对多的关系如 ...
- 理解 IntelliJ IDEA 的项目配置和Web部署
1.项目配置的理解 IDEA 中最重要的各种设置项,就是这个 Project Structre 了,关乎你的项目运行,缺胳膊少腿都不行.最近公司正好也是用之前自己比较熟悉的IDEA而不是Eclipse ...
- 在找一份相对完整的Webpack项目配置指南么?这里有
Webpack已经出来很久了,相关的文章也有很多,然而比较完整的例子却不是很多,让很多新手不知如何下脚,下脚了又遍地坑 说实话,官方文档是蛮乱的,而且有些还是错的错的..很多配置问题只有爬过坑才知道 ...
- Flask之项目创建,路由以及会话控制
Flask Flask诞生于2010年,是Armin ronacher(人名)用 Python 语言基于 Werkzeug 工具箱编写的轻量级Web开发框架. Flask 本身相当于一个内核,其他几乎 ...
- 理解 IntelliJ IDEA 的项目配置和Web部署(转载)
理解 IntelliJ IDEA 的项目配置和Web部署 1.项目配置的理解 IDEA 中最重要的各种设置项,就是这个 Project Structre 了,关乎你的项目运行,缺胳膊少腿都不行.最 ...
- flask, SQLAlchemy, sqlite3 实现 RESTful API 的 todo list, 同时支持form操作
flask, SQLAlchemy, sqlite3 实现 RESTful API, 同时支持form操作. 前端与后台的交互都采用json数据格式,原生javascript实现的ajax.其技术要点 ...
随机推荐
- Eclipse JSP 页面设置 charset=UTF-8
windows —> Preferences —> 搜索框中输入:JSP,设置如下:
- jmeter之HTTP信息头管理器
信息头管理器作用: HTTP信息头管理器在Jmeter的使用过程中起着很重要的作用,通常我们在通过Jmeter向服务器发送http请求(get或者post)的时候,往往后端需要一些验证信息,比如说we ...
- K星异客
http://baike.baidu.com/view/222058.htm 这部改编自基恩·布汝尔1995年出版的同名小说的电影在当年的十月档票房榜上称冠.本来这部电影的外星人主人公属意于威尔.史密 ...
- 【转载】每天一个Linux命令
目 录 每天一个linux命令(1) : ls 命令 每天一个linux命令(2) : cd 命令 每天一个linux命令(3) : pwd 命令 每天一个linux命令(4) : mkdi ...
- BZOJ 3090: Coci2009 [podjela]
3090: Coci2009 [podjela] Time Limit: 3 Sec Memory Limit: 128 MBSubmit: 23 Solved: 17[Submit][Statu ...
- MySQL入门很简单: 15 java访问MySQL数据库
1. 连接数据库 1.1 下载安装驱动 java通过JDBC(Java Database Connectivity,Java数据库连接)来访问MySQL数据库.JDBC的编程接口提供的接口和类与MyS ...
- 动态原型模式 js
动态原型模式 function Person(name,age){ this.name = name; this.age = age; if(typeof this.sayName != " ...
- SQL SERVER 下:1、递归查询父分类下的各个子分类。 2、查询每个商品分类中最贵的前两个商品SQL
1.递归查询父分类下的各个子分类.表设计: SQL: --CTE 语句(适用于MSSQL2005以后版本) with cte_testNavi(Id,Name,Pid ) as ( --这是查询语句 ...
- @RequiresPermissionss是否可以填写多种权限标识,只要满足其一就可以访问?
@RequiresPermissionss是否可以填写多种权限标识,只要满足其一就可以访问? 发布于 180天前 作者 qq_b02c4863 144 次浏览 复制 上一个帖子 下一个帖子 ...
- Cocos2d-x手机游戏开发必备C++语言基础
http://edu.51cto.com/course/course_id-1380-page-1.html