Flask-SQLAlchemy 对数据库的增查改删

Flask-SQLAlchemy 对数据库的增查改删

使用 db.session 的 add() 方法将 phone_one 添加到数据库会话中,最后执行 db.session.commit() 提交数据库会话。
使用 db.session 的 add_all() 方法将所有模型类对象以列表的方式添加到数据库会话中,最后执行 db.session.commit() 提交数据库会话。

Flask学习之上下文

https://blog.csdn.net/Anosy_/article/details/103068061

flask = werkzeug + sqlalchemy + jianjia2

werkzeug:处理url和视图函数之间的映射和http请求

sqlalchemy:处理数据库相关的逻辑操作

jianjia:处理模板

应用上下文和请求上下文都是存放到一个LocalStack的栈中。和应用app相关的操作就必须要应用到应用上下文,比如通过'currnet_app'获取到当前的这个'app'。和请求相关的操作就必须用到请求上下文,比如使用'url_for'反转视图函数

在视图函数中不用担心上下文的问题。因为视图函数要执行,那么肯定是通过访问url的方式执行的,那么这种情况下,Flask底层就已经自动的帮我们把请求上下文和应用上下文都推如到相应的栈中
如果想要在视图函数外面执行相关的操作,比如获取当前的app(currnet_app),或者反转url(url_for),那么就必须要手动的推入相关的上下文:
手动推入app上下文
    # 第一种方式
    app_context = app.app_context()
    app_context.push()
    # 第二种方式
    with app.app_context()
        print(currnet_app)
手动推入请求上下文:推入请求上下文到栈中,会首先判断有没有应用上下文,如果没有那么就会首先推入应用上下文到栈中,然后再推入请求上下文到栈中
    with app.test_request_context():
        print(url_for('my_list'))
为什么上下文需要放在栈上?
应用上下文:在flask底层是基于werkzeug,werkzeug是可以包含多个app的,所以这个时候用一个栈来保存,如果你使用app1,那么app1应该是要在栈的顶部,如果用完了app1,那么app1应该从栈中删除,方便其他代码使用下面的app
如果在写测试代码,或者离线脚本的时候,我们有可能需要创建多个请求上下文,这个时候就需要存放在一个栈中。使用哪个请求上下文的时候,就把对应的请求上下文放到栈的顶部,用完就要把这个请求上下文从栈中移除

常用的上下文
g:处理用户自己定义的数据

current_app:当前激活的用户实例

request:处理用户请求的数据

session:处理session相关的数据

前两个为应用上下文,后两个为请求上下文。

AppContext、RequestContext、Flask与Request之间的关系
AppContext
应用上下文,是对flask一切对象的封装
RequestContext
请求上下文,是对request请求对象的封装
current_app
类型是LocalProxy
像全局变量一样工作,但只能在处理请求期间且在处理它的线程中访问
返回的栈顶元素不是应用上下文,而是flask的应用实例对象
应用上下文的封装=flask核心对象+和外部协作对象(再flask封装对象上再添加push、pop等)(请求上下文同理)

current_app、g 是应用上下文。
request、session 是请求上下文。
手动创建上下文的两种方法:
1. with app.app_context()
2. app = current_app._get_current_object()
两者区别:
请求上下文:保存了客户端和服务器交互的数据。
应用上下文:flask 应用程序运行过程中,保存的一些配置信息,比如程序名、数据库连接、应用
信息等。
两者作用:
请求上下文(request context):
Flask 从客户端收到请求时,要让视图函数能访问一些对象,这样才能处理请求。请求对象是一
个很好的例子,它封装了客户端发送的 HTTP 请求。
要想让视图函数能够访问请求对象,一个显而易见的方式是将其作为参数传入视图函数,不过
这会导致程序中的每个视图函数都增加一个参数,除了访问请求对象,如果视图函数在处理请求时还
要访问其他对象,情况会变得更糟。为了避免大量可有可无的参数把视图函数弄得一团糟,Flask
使用上下文临时把某些对象变为全局可访问。
应用上下文(application context):
它的字面意思是 应用上下文,但它不是一直存在的,它只是 request context 中的一个对 app 
的代理(人),所谓 local proxy。它的作用主要是帮助 request 获取当前的应用,它是伴 request 而
生,随 request 而灭的。

https://blog.csdn.net/weixin_42185136/article/details/104496351
https://www.cnblogs.com/zhongyehai/p/11873967.html
https://blog.csdn.net/JENREY/article/details/86606653
https://blog.csdn.net/m0_37323771/article/details/80645100
https://blog.csdn.net/guoyanshu1210/article/details/77096669

https://blog.csdn.net/wutao22/article/details/116078656
https://blog.csdn.net/u011699626/article/details/109095989

numpy

image
https://zhuanlan.zhihu.com/p/466001512?utm_id=0
https://blog.csdn.net/nanhuaibeian/article/details/100597342

import numpy as np
data = np.arange(12).reshape(2,6) # 生成数据并重组成2行六列
print(data)
cols = data.shape[0] # 0表示行数
print(cols)
cols1 = data.shape[1] # 1表示列数
print(cols1)

if __name__ == '__main__':
    import numpy as np

    # m1()

    # 2维矩阵
    a = np.array([[1, 2, 3], [7, 8, 9]])
    # array([[1, 2, 3],
    #        [7, 8, 9]])

    b = np.array([[4, 5, 6], [1, 2, 3]])
    # array([[4, 5, 6],
    #        [1, 2, 3]])

    c1 = np.c_[a, b]
    # array([[1, 2, 3, 4, 5, 6],
    #       [7, 8, 9, 1, 2, 3]])

    c2 = np.r_[a, b]
    # array([[1, 2, 3],
    #        [7, 8, 9],
    #        [4, 5, 6],
    #        [1, 2, 3]])

    # 1维矩阵
    d = np.array([7, 8, 9])
    # array([7, 8, 9])

    e = np.array([1, 2, 3])
    # array([1, 2, 3])

    f1 = np.c_[d, e]
    # array([[7, 1],
    #        [8, 2],
    #        [9, 3]])

    f2 = np.r_[d, e]
    # array([7, 8, 9, 1, 2, 3])

    pass


"""
将矩阵横向或纵向拼接
np.c_[a,b] 将a, b看成单位,放置于不同的列。(左右合并)
np.r_[a,b] 将a, b看成单位,放置于不同的行。(上下合并)

"""


https://www.jb51.net/article/188633.htm

Python获取环境中所有安装的包

一、Python获取环境中所有安装的包:
打开命令提示符,在某条路径下输入:
pip freeze > ./requirements.txt

二、Python获取某一项目所有安装的包:
1、首先安装:pipreqs,命令行执行:
pip install pipreqs
2、打开命令提示符,将路径切换到需要生成依赖的项目的根目录下,输入:
pipreqs ./ # 报错就执行下面这条
pipreqs ./ --encoding=utf-8
执行完后,在这个项目下会生成一个requirements.txt文件,里面记录了该项目所用到的依赖。

三、在新环境下批量安装依赖包的模块:
pip install -r requirements.txt

https://blog.csdn.net/qq_42804678/article/details/99620405

https://www.pypandas.cn/
https://www.numpy.org.cn/
https://www.matplotlib.org.cn/gallery/#lines-bars-and-markers
https://www.cnblogs.com/yunhgu/p/15060036.html
https://www.cnblogs.com/yunhgu/p/15045190.html
http://tool.liumingye.cn/
https://www.cnblogs.com/hashcoin/p/12405252.html

总结Pandas的20个统计函数

https://zhuanlan.zhihu.com/p/486195805?utm_id=0

df.count()          #非空元素计算
df.min()            #最小值
df.max()            #最大值
df.idxmin()         #最小值的位置,类似于R中的which.min函数
df.idxmax()         #最大值的位置,类似于R中的which.max函数
df.quantile(0.1)    #10%分位数
df.sum()            #求和
df.mean()           #均值
df.median()         #中位数
df.mode()           #众数
df.var()            #方差
df.std()            #标准差
df.mad()            #平均绝对偏差
df.skew()           #偏度
df.kurt()           #峰度
df.describe()       #一次性输出多个描述性统计指标
df.abs()            #求绝对值
df.prod             #元素乘积
df.cumsum           #累计和
df.cumprod          #累计乘积

https://zhuanlan.zhihu.com/p/551346170
https://zhuanlan.zhihu.com/p/88593024

Scrapy

https://zhuanlan.zhihu.com/p/598764670?utm_id=0
Scrapy 是一个基于 Twisted 的异步处理框架,是纯Python实现的爬虫框架,其架构清晰, 榄块之间的耦合程度低,可扩展性极强,可以灵活完成各种需求。我们只需要定制开发几个模块就可以轻松实现一个爬虫。

参考资料

https://blog.csdn.net/weixin_43790276/article/details/103175219
https://blog.csdn.net/wyw875960418/article/details/120346281
https://blog.csdn.net/m0_37519490/article/details/81260395

posted @ 2023-09-01 16:56  三里清风18  阅读(53)  评论(0)    收藏  举报