在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实现的生成随机迷宫算法核心代码分享(含游戏完整代码)
Jul 11 Python
跟老齐学Python之做一个小游戏
Sep 28 Python
Python操作MySQL数据库的三种方法总结
Jan 30 Python
Django中日期处理注意事项与自定义时间格式转换详解
Aug 06 Python
python+pyqt5实现图片批量缩放工具
Mar 18 Python
pytorch索引查找 index_select的例子
Aug 18 Python
在python3中使用shuffle函数要注意的地方
Feb 28 Python
详解Python中如何将数据存储为json格式的文件
Nov 18 Python
python全栈开发语法总结
Nov 22 Python
python基础之匿名函数详解
Apr 21 Python
Python 实现定积分与二重定积分的操作
May 26 Python
Python爬取用户观影数据并分析用户与电影之间的隐藏信息!
Jun 29 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
增加反向链接的101个方法 站长推荐
2007/01/31 PHP
让PHP COOKIE立即生效,不用刷新就可以使用
2011/03/09 PHP
PHP中配置IIS7实现基本身份验证的方法
2015/09/24 PHP
ThinkPHP中Common/common.php文件常用函数功能分析
2016/05/20 PHP
PHP批量删除jQuery操作
2017/07/23 PHP
PHP getDocNamespaces()函数讲解
2019/02/03 PHP
jQuery EasyUI 开源插件套装 完全替代ExtJS
2010/03/24 Javascript
JavaScript弹出窗口方法汇总
2014/08/12 Javascript
js带前后翻页的图片切换效果代码分享
2015/09/08 Javascript
微信企业号开发之微信考勤Cookies的使用
2015/09/11 Javascript
JavaScript实现使用Canvas绘制图形的基本教程
2016/10/27 Javascript
jQuery编写textarea输入字数限制代码
2017/03/23 jQuery
angular指令笔记ng-options的使用方法
2017/09/18 Javascript
echarts学习笔记之箱线图的分析与绘制详解
2017/11/22 Javascript
jQuery实现文字超过1行、2行或规定的行数时自动加省略号的方法
2018/03/28 jQuery
layui弹出层按钮提交iframe表单的方法
2018/08/20 Javascript
JS实现的简单tab切换功能完整示例
2019/06/20 Javascript
node后端服务保活的实现
2019/11/10 Javascript
python自动化测试之setUp与tearDown实例
2014/09/28 Python
使用Python编写简单的画图板程序的示例教程
2015/12/08 Python
python获取指定时间差的时间实例详解
2017/04/11 Python
Python数据结构与算法之图的基本实现及迭代器实例详解
2017/12/12 Python
编写多线程Python服务器 最适合基础
2018/09/14 Python
浅谈Python协程
2020/06/17 Python
Python 虚拟环境工作原理解析
2020/12/24 Python
CSS3 clip-path 用法介绍详解
2018/03/01 HTML / CSS
HTML5全屏(Fullscreen)API详细介绍
2015/04/24 HTML / CSS
特步官方商城:Xtep
2017/03/21 全球购物
小学教育毕业生自荐信
2013/11/18 职场文书
临床护士自荐信
2014/01/31 职场文书
高中毕业自我评价
2014/02/08 职场文书
工程质量承诺书
2014/03/27 职场文书
医院党的群众路线教育实践活动学习心得体会
2014/10/30 职场文书
同事打架检讨书
2015/05/06 职场文书
趣味运动会简讯
2015/07/20 职场文书
CSS实现五种常用的2D转换
2021/12/06 HTML / CSS