flask强大的第三方组件之falsk-sqlalchemy

定义: flask-sqlalchemy: 是对sqlalchemy进行了封装和扩展,用起来更加的方便.

前不久刚刚认识过了SQLAlchemy,点击这里复习一下

当 Flask 与 SQLAlchemy 发生火花会怎么样呢?

Flask-SQLAlchemy就这么诞生了

首先要先安装一下Flask-SQLAlchemy这个模块

pip install Flask-SQLAlchemy

然后你要下载一个干净的Flask项目 点击下载

接下来基于这个Flask项目,我们要加入Flask-SQLAlchemy让项目变得生动起来

1.加入Flask-SQLAlchemy第三方组件

 1 from flask import Flask
 2
 3 # 导入Flask-SQLAlchemy中的SQLAlchemy
 4 from flask_sqlalchemy import SQLAlchemy
 5
 6 # 实例化SQLAlchemy
 7 db = SQLAlchemy()
 8 # PS : 实例化SQLAlchemy的代码必须要在引入蓝图之前
 9
10 from .views.users import user
11
12
13 def create_app():
14     app = Flask(__name__)
15
16     # 初始化App配置 这个app配置就厉害了,专门针对 SQLAlchemy 进行配置
17     # SQLALCHEMY_DATABASE_URI 配置 SQLAlchemy 的链接字符串儿
18     app.config["SQLALCHEMY_DATABASE_URI"] = "mysql+pymysql://root:DragonFire@127.0.0.1:3306/dragon?charset=utf8"
19     # SQLALCHEMY_POOL_SIZE 配置 SQLAlchemy 的连接池大小
20     app.config["SQLALCHEMY_POOL_SIZE"] = 5
21     # SQLALCHEMY_POOL_TIMEOUT 配置 SQLAlchemy 的连接超时时间
22     app.config["SQLALCHEMY_POOL_TIMEOUT"] = 15
23     app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False
24
25     # 初始化SQLAlchemy , 本质就是将以上的配置读取出来
26     db.init_app(app)
27
28     app.register_blueprint(user)
29
30     return app

MyApp/__init__.py

2.建立models.py ORM模型文件

 1 from MyApp import db
 2
 3 Base = db.Model # 这句话你是否还记的?
 4 # from sqlalchemy.ext.declarative import declarative_base
 5 # Base = declarative_base()
 6 # 每一次我们在创建数据表的时候都要做这样一件事
 7 # 然而Flask-SQLAlchemy已经为我们把 Base 封装好了
 8
 9 # 建立User数据表
10 class Users(Base): # Base实际上就是 db.Model
11     __tablename__ = "users"
12     __table_args__ = {"useexisting": True}
13     # 在SQLAlchemy 中我们是导入了Column和数据类型 Integer 在这里
14     # 就和db.Model一样,已经封装好了
15     id = db.Column(db.Integer,primary_key=True)
16     username = db.Column(db.String(32))
17     password = db.Column(db.String(32))
18
19
20 if __name__ == ‘__main__‘:
21     from MyApp import create_app
22     app = create_app()
23     # 这里你要回顾一下Flask应该上下文管理了
24     # 离线脚本:
25     with app.app_context():
26         db.drop_all()
27         db.create_all()

MyApp/models.py

3.登录视图函数的应用

 1 from flask import Blueprint, request, render_template
 2
 3 user = Blueprint("user", __name__)
 4
 5 from MyApp.models import Users
 6 from MyApp import db
 7
 8 @user.route("/login",methods=["POST","GET"])
 9 def user_login():
10     if request.method == "POST":
11         username = request.form.get("username")
12         password = request.form.get("password")
13
14         # 还记不记得我们的
15         # from sqlalchemy.orm import sessionmaker
16         # Session = sessionmaker(engine)
17         # db_sesson = Session()
18         # 现在不用了,因为 Flask-SQLAlchemy 也已经为我们做好会话打开的工作
19         # 我们在这里做个弊:
20         db.session.add(Users(username=username,password=password))
21         db.session.commit()
22
23         # 然后再查询,捏哈哈哈哈哈
24         user_info = Users.query.filter(Users.username == username and User.password == password).first()
25         print(user_info.username)
26         if user_info:
27             return f"登录成功{user_info.username}"
28
29     return render_template("login.html")

MyApp/views/user.py

其实Flask-SQLAlchemy比起SQLAlchemy更加的简单自如,用法几乎一模一样,就是在配置和启动上需要注意与Flask的配合就好

原文地址:https://www.cnblogs.com/gyh412724/p/10490887.html

时间: 2024-10-24 18:12:38

flask强大的第三方组件之falsk-sqlalchemy的相关文章

第三方组件引用另一个第三方组件的悲剧

首先我先声明,我的摘要是故意这样写的,如果你是因为看了摘要才进来的,请让我大笑三声:哈哈哈~~ 不过既然你已经进来了,不妨继续往下看看~~ 事件背景 话说最近换工作了,刚接手的项目的项目中遇到一个棘手的事情;一个第三方组件中使用了老版的log4net(1.2.10),另一个第三方组件中使用了新版的log4net(1.2.13) 这下问题来了 当我自己的项目中需要同时使用这2个第三方组件的时候,他们各自引用的log4net版本是不一致的 所以,不管我引用的是哪个版本的log4net,最终的效果是另

第三方组件

第三方组件是针对某种软件在应用功能上的不足或缺陷,而由软件编制方以外的其他组织或个人开发的相关组件.这种组件不是Java官方提供的,也不是由软件使用者编写的组件.使用成熟的第三方组件进行开发会提高开发的效率,减少出错的可能. Apache公司(http://commons.apache.org)针对Java提供了很多的功能强大的组件,除了Apache公司以外,还会有很多的公司.组织和个人会提供一些非常好的组件.这些第三方组件的列表是不可能准确的给出来的.如果需要找第三方组件,可以到一些比较大的社

flask 中的常用组件的使用 ,virtualenv组件和 pipreqs组件

一  . flask 中连接的数据库的组件 DButils #!/usr/bin/env python # -*- coding:utf-8 -*- import pymysql from DBUtils.PooledDB import PooledDB, SharedDBConnection POOL = PooledDB( creator=pymysql, # 使用链接数据库的模块 maxconnections=20, # 连接池允许的最大连接数,0和None表示不限制连接数 mincach

强大的DataGrid组件[1]

说明:DataGrid组件是Silverlight数据组件中最为常用并且是功能最为强大的数据组件.因此,对开发者而言,深入了解其特性是十分有必要的.本文先介绍该组件的基本特性,接着通过几个简单实例来说明该组件的基本数据操作过程. 组件所在命名空间: System.Windows.Controls 组件常用方法: BeginEdit:使DataGrid进入编辑状态. CancelEdit:取消DataGrid的编辑状态. CollapseRowGroup:闭合DataGrid的行分组. Commi

学习制作iOS程序第一天:建立主目录、源代码管理、Pod安装第三方组件

前言 俗话说,看过的能记住20%,用过的能记住40%,解决过错误的能记住60%,为此加班好几天解决问题的能记住80%.利用自学的iOS知识搭建一个中介查房的软件.学以致用. 一.建立文件目录 打开XCode,新建一个“Single View Application”.保存到桌面新建的目录“randy.company.customerappios”里,本文只考虑iOS7.0及以上,以下的暂不考虑了. 二.连接到git服务器(Bitbucket) 1.进入Bitbucket后台管理,新建一个repo

iOS 项目中用到的一些开源库和第三方组件

iOS 项目中用到的一些 iOS 开源库和第三方组件 分享一下我目前所在公司 iOS 项目中用到的一些 iOS 开源库和第三方组件, 感谢开源, 减少了我们的劳动力, 节约了我们大量的时间, 让我们有更多的时间和精力能更加专注的做好自己的产品 用到的组件 1.通过CocoaPods安装 项目名称 项目信息 AFNetworking 网络请求组件 FMDB 本地数据库组件 SDWebImage 多个缩略图缓存组件 UICKeyChainStore 存放用户账号密码组件 Reachability 监

React Native常用第三方组件汇总--史上最全 之一

把我认为最好的知识,拿来与他人分享,是这一生快事之一! React Native 项目常用第三方组件汇总: react-native-animatable 动画 react-native-carousel 轮播 react-native-countdown 倒计时 react-native-device-info 设备信息 react-native-fileupload 文件上传 react-native-icons 图标 react-native-image-picker 图片选择器 reac

不使用第三方组件,只调用COM,导出EXECL,但只装OFFICE2007,不装2003,直接强制引用动态库的方法

步骤1:强制引用动态库”Microsoft.Office.Interop.Excel“,版本为11.0: 步骤2:添加引用OFFICE2007的COM组件”MicroSoft Office 12.0 Object Library“(OFFICE2003的是MicroSoft Office 11.0 Object Library),添加完成后动态库为”microsoft.office.core“. 不使用第三方组件,只调用COM,导出EXECL,但只装OFFICE2007,不装2003,直接强制引

angular 如何使用第三方组件ng-bootstrap

1.在你的项目中以下指令    npm install --save @ng-bootstrap/ng-bootstrap 安装完成会显示 + @ng-bootstrap/[email protected] added 1 package in 8.757s   2.在AppModule模块中引入这个组件: import {NgbModule} from '@ng-bootstrap/ng-bootstrap'; @NgModule({ declarations: [AppComponent,