python flask

蓝图Blueprint

什么是蓝图?

蓝图:用于实现单个应用的视图、模板、静态文件的集合。

蓝图就是模块化处理的类。

简单来说,蓝图就是一个存储操作路由映射方法的容器,主要用来实现客户端请求和URL相互关联的功能。 在Flask中,使用蓝图可以帮助我们实现模块化应用的功能。

蓝图的使用:

一、创建蓝图对象。

#Blueprint必须指定两个参数,admin表示蓝图的名称,__name__表示蓝图所在模块
admin = Blueprint('admin',__name__)

二、注册蓝图路由。

@admin.route('/')
def admin_index():
    return 'admin_index'

三、在程序实例中注册该蓝图。

#url_prefix是指在定义视图函数url前面加上/admin才能访问该视图函数
app.register_blueprint(admin,url_prefix='/admin')

SQLAlchemy

db.session api 接口地址

https://docs.sqlalchemy.org/en/13/orm/session_api.html

 

SQLAlchemy是一个基于Python实现的ORM框架。该框架建立在 DB API之上,使用关系对象映射进行数据库操作,简言之便是:将类和对象转换成SQL,然后使用数据API执行SQL并获取执行结果

Engine,框架的引擎

Connection Pooling ,数据库连接池 Dialect,选择连接数据库的DB API种类

Schema/Types,架构和类型

SQL Exprression Language,SQL表达式语言

ORM技术:Object-Relational Mapping,把关系数据库的表结构映射到对象上。

create_engine()用来初始化数据库连接。SQLAlchemy用一个字符串表示连接信息:

'数据库类型+数据库驱动名称://用户名:口令@机器地址:端口号/数据库名'

FLASK --DB-COLUMN属性

db.Column 中其余的参数指定属性的配置选项

选项名说 明
primary_key如果设为 True,这列就是表的主键
unique如果设为 True,这列不允许出现重复的值
index如果设为 True,为这列创建索引,提升查询效率
nullable如果设为 True,这列允许使用空值;如果设为 False,这列不允许使用空值
default为这列定义默认值

 

flask_SQLAlchemy扩展包:封装了对数据库的操作,离开了这个扩展包,就不会碰见session

 

flask-sqlalchemy filter 和 filter_by 的区别

filter用类名.属性名,比较用==,filter_by直接用属性名,比较用= 不过这个是语法小细节。

个人觉得最重要的区别是filter不支持组合查询,只能连续调用filter来变相实现。

而filter_by的参数是**kwargs,直接支持组合查询。

 

filter和filter_by查询:都是查询过滤器,要使用查询执行器;
User.query.filter(User.name=='wang').all() 参数:必须使用类名.字段,可以使用运算符>= == <= !=
User.query.filter_by(name='wang').all()参数:只需要使用字段名,不能使用运算符。

 

  • filter_by()方法,对查询结果过滤,参数必须是键值对”key=value”
    # WHERE name='Tom'
    users = User.query.filter_by(name='Tom')
    # WHERE name='Tom' AND age=17
    users = User.query.filter_by(name='Jane', age=17)

 

  • filter()方法,对查询结果过滤,比filter_by()方法更强大,参数是布尔表达式
    # WHERE age<20
    users = User.query.filter(User.age<20)
    # WHERE name LIKE 'J%' AND age<20
    users = User.query.filter(User.name.startswith('J'), User.age<20)

多个查询条件用逗号分割。

first()方法,取返回列表中的第一个元素,当我们只查询一条记录时非常有用

user = User.query.filter_by(name='Michael').first()
  • order_by()方法,排序
    from sqlalchemy import desc

    # ORDER BY name
    user = User.query.order_by(User.name)
    # ORDER BY age DESC, name
    user = User.query.order_by(desc(User.age), User.name)

 

 

 

request模块

 1、method:请求的方法,
return request.method #POST
2、form:返回form的内容
return json.dumps(request.form) #返回值:{"username": "123", "password": "1234"}
3、args和values:args返回请求中的参数,values返回请求中的参数和form
return json.dumps(request.args) # 返回值:{"a": "1", "b": "2"}
return str(request.values) #返回值:CombinedMultiDict([ImmutableMultiDict([('a', '1'), ('b', '2')]), ImmutableMultiDict([('username', '123'), ('password', '1234')])])
4、cookies:cookies信息
return json.dumps(request.cookies) #cookies信息
5、headers:请求headers信息,返回的结果是个list
return str(request.headers) #headers信息
request.headers.get('User-Agent') #获取User-Agent信息
6、url、path、script_root、base_url、url_root:看结果比较直观
return 'url: %s' %request.url 返回值:url: http://192.168.1.183:5000/testrequest?a&b
return 'script_root: %s' %request.script_root 返回值:script_root: ,
return 'path: %s' %request.path 返回值:path: /testrequest
return 'base_url: %s' %request.base_url 返回值:base_url: http://192.168.1.183:5000/testrequest
return 'url_root : %s' %request.url_root 返回值:url_root : http://192.168.1.183:5000/
7、date、files:date是请求的数据,files随请求上传的文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值