视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
在Python的Flask框架下使用sqlalchemy库的简单教程
2020-11-27 14:32:28 责编:小采
文档

flask中的sqlalchemy 相比于sqlalchemy封装的更加彻底一些 , 在一些方法上更简单

首先import类库:

在CODE上查看代码片派生到我的代码片

 from flask import Flask 
 from flask.ext.sqlalchemy import SQLAlchemy


然后,需要加载 数据库路径

在CODE上查看代码片派生到我的代码片

 mysqlname='mysql://user:passwd@127.0.0.1/student?charset=utf8' 

在CODE上查看代码片派生到我的代码片

 app = Flask(__name__) 
 app.config['SQLALCHEMY_DATABASE_URI'] = mysqlname 
 db = SQLAlchemy(app) 


通过前面两步 ,我们已经让flask和数据库联系到了一起

下面我们要把 flask和具体的表联系在一起、

这样建立一个model模型

在CODE上查看代码片派生到我的代码片

 class User(db.Model): 
 
 """存储 每种报警类型的数量 , 以 分钟 为单位进行统计 
 :param source: string ,报警来源 
 :param network_logic_area: string ,该报警所属的逻辑网络区域 
 :param start_time: datetime , 报警发生时间 
 """ 
 
 __tablename__ = 'hello' 
 id = db.Column(db.Integer , primary_key = True) 
 source = db.Column(db.String(255) ) 
 network_logic_area = db.Column(db.String(255) ) 
 start_time = db.Column(db.DateTime) 
 count = db.Column(db.Integer) 
 
 def __init__(self , source , network_logic_area , start_time , count): 
 self.source = source 
 self.network_logic_area = network_logic_area 
 self.start_time = start_time 
 self.count = count 
 
 def alter(self): 
 self.count += 1; 

上面这个代码,就让falsk和具体的表hello联系在了一起

在这个类中 ,我们首先要指定表,然后把这个表中的列都列出来,最后定义一个 初始化函数 , 让后面插入数据使用


现在开始具体的数据库操作:

1、insert

在CODE上查看代码片派生到我的代码片

 p = User(........) 
 db.session.add(p) 
 db.session.commit() 

通过 类User构造了一条数据

2、find

用主键获取数据:
Code example:

User.query.get(1)



通过一个精确参数进行反查:
Code example:

peter
=

User.query.filter_by(username='peter').first() 
#注意:精确查询函数query.filter_by(),是通过传递参数进行查询;其他增强型查询函数是query.filter(),通过传递表达式进行查询。

print(peter.id) 
#如果数据不存在则返回None

模糊查询:
Code example:

User.query.filter(User.email.endswith('@example.com')).all()

[,
 ]

逻辑非1:
Code example:

peter
=

User.query.filter(User.username
 !=

'peter').first()

print(peter.id)

逻辑非2:
Code example:

from

sqlalchemy import

not_

peter
=

User.query.filter(not_(User.username=='peter')).first()

print(peter.id)

逻辑与:
Code example:

from

sqlalchemy import

and_

peter
=

User.query.filter(and_(User.username=='peter',
 User.email.endswith('@example.com'))).first()

print(peter.id)

逻辑或:
Code example:

from

sqlalchemy import

or_

peter
=

User.query.filter(or_(User.username
 !=

'peter',
 User.email.endswith('@example.com'))).first()

print(peter.id)

filter_by:这个里面只能放具体放入条件,不能放一个复杂的计算 ,

filter: 这个里面可以放一些复杂的计算

.first:取第一条数据

.all:取出所有数据

还有一个其他的方法,可以进行排序、计数之类的操作

3、使用sql语句

可以通过 前面构造的 db 直接使用sql的原生语句

在CODE上查看代码片派生到我的代码片

 insert_table.db.engine.execute(' ..... ') 


4、delete

在CODE上查看代码片派生到我的代码片

 me = User(........) 

在CODE上查看代码片派生到我的代码片

 db.session.delete(me) 
 db.session.commit() 

5、更新数据

Code example:
 
u
=

User.query.first()

u.username
=

'guest' 
#更新数据和变量赋值那么简单,但必须是通过查询返回的对象。

db.session.commit()

下载本文
显示全文
专题