在Python的Flask框架下使用sqlalchemy库的简单教程


Posted in Python onApril 09, 2015

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

首先import类库:

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

<span style="font-size:18px;">from flask import Flask 
  from flask.ext.sqlalchemy import SQLAlchemy</span>

 

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

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

<span style="font-size:18px;">mysqlname='<span style="color: rgb(230, 219, 116); font-family: 'Source Code Pro'; font-size: 13pt; background-color: rgb(39, 40, 34);">mysql://user:passwd@127.0.0.1/student?charset=utf8</span>'</span>

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

<span style="font-size:18px;">app = Flask(__name__) 
  app.config['SQLALCHEMY_DATABASE_URI'] = mysqlname 
  db = SQLAlchemy(app)</span>

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

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

这样建立一个model模型

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

<span style="font-size:18px;">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;</span>

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

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

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

1、insert

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

<span style="font-size:18px;">    p = User(........) 
      db.session.add(p) 
      db.session.commit()</span>

通过 类User构造了一条数据

2、find

用主键获取数据:
Code example:

User.query.get(1)

<User
 u'admin'>

通过一个精确参数进行反查:
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()

[<User
 u'admin'>,
 <User u'guest'>]

逻辑非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上查看代码片派生到我的代码片

<span style="font-size:18px;">insert_table.db.engine.execute(' ..... ')</span>

4、delete

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

<span style="font-size:18px;">me = User(........)</span>

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

<span style="font-size:18px;">db.session.delete(me) 
  db.session.commit()</span>

5、更新数据

Code example:
 
u
=

User.query.first()

u.username
=

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

db.session.commit()
Python 相关文章推荐
python合并文本文件示例
Feb 07 Python
python使用三角迭代计算圆周率PI的方法
Mar 20 Python
Django应用程序中如何发送电子邮件详解
Feb 04 Python
Python中列表list以及list与数组array的相互转换实现方法
Sep 22 Python
Python网络编程详解
Oct 31 Python
python中的变量如何开辟内存
Jun 26 Python
Python matplotlib绘制饼状图功能示例
Sep 10 Python
python脚本后台执行方式
Dec 21 Python
python数据分析工具之 matplotlib详解
Apr 09 Python
Python openpyxl模块实现excel读写操作
Jun 30 Python
Django创建一个后台的基本步骤记录
Oct 02 Python
python实现模拟器爬取抖音评论数据的示例代码
Jan 06 Python
详解Python中的正则表达式的用法
Apr 09 #Python
Python中几种操作字符串的方法的介绍
Apr 09 #Python
详解Python中的__new__()方法的使用
Apr 09 #Python
Python中动态获取对象的属性和方法的教程
Apr 09 #Python
详解Python中的循环语句的用法
Apr 09 #Python
python3简单实现微信爬虫
Apr 09 #Python
初步理解Python进程的信号通讯
Apr 09 #Python
You might like
php通用防注入程序 推荐
2011/02/26 PHP
php用户注册信息验证正则表达式
2015/11/12 PHP
jQuery实现页面滚动时层智能浮动定位实例探讨
2013/03/29 Javascript
js从10种颜色中随机取色实现每次取出不同的颜色
2013/10/23 Javascript
js实现简单的购物车有图有代码
2014/05/26 Javascript
javascript实现俄罗斯方块游戏的思路和方法
2015/04/27 Javascript
JS 面向对象之继承---多种组合继承详解
2016/07/10 Javascript
jQuery实现的小图列表,大图展示效果幻灯片示例
2016/10/25 Javascript
BootStrap框架个人总结(bootstrap框架、导航条、下拉菜单、轮播广告carousel、栅格系统布局、标签页tabs、模态框、菜单定位)
2016/12/01 Javascript
利用jQuery.Validate异步验证用户名是否存在(推荐)
2016/12/09 Javascript
jQuery命名空间与闭包用法示例
2017/01/12 Javascript
vue多层嵌套路由实例分析
2019/03/19 Javascript
JS+DIV实现拖动效果
2020/02/11 Javascript
vuex Module将 store 分割成模块的操作
2020/12/07 Vue.js
谈谈如何手动释放Python的内存
2016/12/17 Python
详解python脚本自动生成需要文件实例代码
2017/02/04 Python
python获取命令行输入参数列表的实例代码
2018/06/23 Python
Python 解码Base64 得到码流格式文本实例
2020/01/09 Python
用python按照图像灰度值统计并筛选图片的操作(PIL,shutil,os)
2020/06/04 Python
为什么称python为胶水语言
2020/06/16 Python
Selenium alert 弹窗处理的示例代码
2020/08/06 Python
Pycharm2020最新激活码|永久激活(附最新激活码和插件的详细教程)
2020/09/29 Python
python 绘制场景热力图的示例
2020/09/23 Python
python开发一款翻译工具
2020/10/10 Python
纯CSS3单页切换导航菜单界面设计的简单实现
2016/08/16 HTML / CSS
详解Canvas事件绑定
2018/06/27 HTML / CSS
台湾百利市购物中心:e-Payless
2017/08/16 全球购物
俄罗斯金苹果网上化妆品和香水商店:Goldapple
2019/12/01 全球购物
介绍一下SOA和SOA的基本特征
2016/02/24 面试题
理工科学生的自我评价
2013/12/15 职场文书
安全事故检讨书
2014/01/18 职场文书
个人收入证明范本
2014/09/18 职场文书
关于颐和园的导游词
2015/01/30 职场文书
2015年实习班主任工作总结
2015/04/23 职场文书
Vue+Element UI实现概要小弹窗的全过程
2021/05/30 Vue.js
使用Springboot实现健身房管理系统
2021/07/01 Java/Android