在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高级应用实例对比:高效计算大文件中的最长行的长度
Jun 08 Python
python使用两种发邮件的方式smtp和outlook示例
Jun 02 Python
python 中random模块的常用方法总结
Jul 08 Python
Python中的浮点数原理与运算分析
Oct 12 Python
python3中os.path模块下常用的用法总结【推荐】
Sep 16 Python
Pycharm连接远程服务器并实现远程调试的实现
Aug 02 Python
wxPython实现列表增删改查功能
Nov 19 Python
Python-jenkins模块之folder相关操作介绍
May 12 Python
在pycharm中使用matplotlib.pyplot 绘图时报错的解决
Jun 01 Python
python接入支付宝的实例操作
Jul 20 Python
python神经网络Xception模型
May 06 Python
python实现商品进销存管理系统
May 30 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文本数据库的搜索方法
2006/10/09 PHP
php 分页类 扩展代码
2009/06/11 PHP
php实现两个数组相加的方法
2015/02/17 PHP
PHP SPL标准库之接口(Interface)详解
2015/05/11 PHP
PHP receiveMail实现收邮件功能
2018/04/25 PHP
解决laravel资源加载路径设置的问题
2019/10/14 PHP
当jQuery遭遇CoffeeScript的时候 使用分享
2011/09/17 Javascript
基于JQuery实现的Select级联
2014/01/27 Javascript
js的隐含参数(arguments,callee,caller)使用方法
2014/01/28 Javascript
jQuery实现给页面换肤的方法
2015/05/30 Javascript
JS只能输入正整数的简单实例
2016/10/07 Javascript
webpack 样式加载的实现原理
2018/06/12 Javascript
微信小程序多音频播放进度条问题
2018/08/28 Javascript
微信小程序自定义toast组件的方法详解【含动画】
2019/05/11 Javascript
cordova+vue+webapp使用html5获取地理位置的方法
2019/07/06 Javascript
layui实现根据table数据判断按钮显示情况的方法
2019/09/26 Javascript
vue cli3 配置proxy代理无效的解决
2019/10/30 Javascript
vue实现的多页面项目如何优化打包的步骤详解
2020/07/19 Javascript
Vue基本指令实例图文讲解
2021/02/25 Vue.js
python制作爬虫并将抓取结果保存到excel中
2016/04/06 Python
Python实现统计给定列表中指定数字出现次数的方法
2018/04/11 Python
使用matplotlib画散点图的方法
2018/05/25 Python
Python使用百度api做人脸对比的方法
2019/08/28 Python
python使用opencv实现马赛克效果示例
2019/09/28 Python
Python的对象传递与Copy函数使用详解
2019/12/26 Python
PyTorch和Keras计算模型参数的例子
2020/01/02 Python
美国睫毛、眉毛精华液领导品牌:RevitaLash Cosmetics
2018/03/26 全球购物
美国珠宝店:Helzberg Diamonds
2018/10/24 全球购物
Bravofly德国:预订廉价航班和酒店
2019/09/22 全球购物
英国门销售网站:Green Tree Doors
2020/01/07 全球购物
房地产广告词大全
2014/03/19 职场文书
大学国际贸易专业自荐信
2014/06/05 职场文书
2014年施工员工作总结
2014/11/18 职场文书
企业计划生育责任书
2015/05/09 职场文书
2016年员工政治思想表现评语
2015/12/02 职场文书
nginx网站服务如何配置防盗链(推荐)
2021/03/31 Servers