在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采用socket模拟TCP通讯的实现方法
Nov 19 Python
Python科学计算之Pandas详解
Jan 15 Python
Python实现的爬虫功能代码
Jun 24 Python
Python 数据处理库 pandas进阶教程
Apr 21 Python
python获取本机所有IP地址的方法
Dec 26 Python
在python中将list分段并保存为array类型的方法
Jul 15 Python
Python 取numpy数组的某几行某几列方法
Oct 24 Python
Python安装OpenCV的示例代码
Mar 05 Python
Win10下配置tensorflow-gpu的详细教程(无VS2015/2017)
Jul 14 Python
PyCharm 解决找不到新打开项目的窗口问题
Jan 15 Python
如何利用Python实现一个论文降重工具
Jul 09 Python
再谈python_tkinter弹出对话框创建
Mar 20 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
给apache2.2加上mod_encoding模块後 php5.2.0 处理url出现bug
2007/04/12 PHP
台湾中原大学php教程孙仲岳主讲
2008/01/07 PHP
destoon网站转移服务器后搜索汉字出现乱码的解决方法
2014/06/21 PHP
将CMYK颜色值和RGB颜色相互转换的PHP代码
2014/07/28 PHP
Laravel框架学习笔记(二)项目实战之模型(Models)
2014/10/15 PHP
ThinkPHP通过AJAX返回JSON的两种实现方法
2014/12/18 PHP
PHP中使用CURL获取页面title例子
2015/01/07 PHP
yii添删改查实例
2015/11/16 PHP
深入理解PHP 数组之count 函数
2016/06/13 PHP
Yii2框架实现登录、退出及自动登录功能的方法详解
2017/10/24 PHP
jQuery获取选中内容及设置元素属性的方法
2014/07/09 Javascript
jquery中push()的用法(数组添加元素)
2014/11/25 Javascript
Javascript实现获取窗口的大小和位置代码分享
2014/12/04 Javascript
Flash图片上传组件 swfupload使用指南
2015/03/14 Javascript
JavaScript实现列表分页功能特效
2015/05/15 Javascript
贴近用户体验的Jquery日期、时间选择插件
2015/08/19 Javascript
Bootstarp风格的toggle效果分享
2016/02/23 Javascript
JS 数字转换为大写金额的简单实例
2016/08/04 Javascript
jQuery使用eraser.js插件实现擦除、刮刮卡效果的方法【附eraser.js下载】
2017/04/28 jQuery
Javascript生成器(Generator)的介绍与使用
2021/01/31 Javascript
[02:56]DOTA2矮人直升机 英雄基础教程
2013/11/26 DOTA
详细分析python3的reduce函数
2017/12/05 Python
python检测主机的连通性并记录到文件的实例
2018/06/21 Python
CSS3地图动态实例代码(圆圈向外扩散)
2018/06/15 HTML / CSS
基于Html5实现的react拖拽排序组件示例
2018/08/13 HTML / CSS
介绍一下XMLHttpRequest对象
2012/02/12 面试题
工作自我评价怎么写
2014/01/29 职场文书
分公司负责人任命书
2014/06/04 职场文书
会计学毕业生求职信
2014/06/25 职场文书
2014县政府领导班子三严三实对照检查材料思想汇报
2014/09/26 职场文书
2014年大学班级工作总结
2014/11/14 职场文书
置业顾问岗位职责
2015/02/09 职场文书
2016廉洁从业学习心得体会
2016/01/19 职场文书
关于Javascript闭包与应用的详解
2021/04/22 Javascript
Python爬虫基础之爬虫的分类知识总结
2021/05/13 Python
关于mysql中时间日期类型和字符串类型的选择
2021/11/27 MySQL