在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爬虫常用的模块分析
Aug 29 Python
Python基于回溯法子集树模板解决数字组合问题实例
Sep 02 Python
详解 Python 与文件对象共事的实例
Sep 11 Python
python定向爬取淘宝商品价格
Feb 27 Python
python DataFrame 修改列的顺序实例
Apr 10 Python
Django-Rest-Framework 权限管理源码浅析(小结)
Nov 12 Python
Django使用AJAX调用自己写的API接口的方法
Mar 06 Python
python Kmeans算法原理深入解析
Aug 23 Python
Python 元组拆包示例(Tuple Unpacking)
Dec 24 Python
Python爬虫爬取电影票房数据及图表展示操作示例
Mar 27 Python
VScode连接远程服务器上的jupyter notebook的实现
Apr 23 Python
Python实现清理微信僵尸粉功能示例【基于itchat模块】
May 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
基于PHP一些十分严重的缺陷详解
2013/06/03 PHP
PHP is_subclass_of函数的一个BUG和解决方法
2014/06/01 PHP
php基于curl扩展制作跨平台的restfule 接口
2015/05/11 PHP
php使用gzip压缩传输js和css文件的方法
2015/07/29 PHP
php基于openssl的rsa加密解密示例
2016/07/11 PHP
PHP重载基础知识回顾
2020/09/10 PHP
JavaScript中的new的使用方法与注意事项
2007/05/16 Javascript
javascript中利用数组实现的循环队列代码
2010/01/24 Javascript
JQuery获取文本框中字符长度的代码
2011/09/29 Javascript
extjs 如何给column 加上提示
2014/07/29 Javascript
JS判断元素是否在数组内的实现代码
2016/03/30 Javascript
jQuery 跨域访问解决原理案例详解
2016/07/09 Javascript
vue 全选与反选的实现方法(无Bug 新手看过来)
2018/02/09 Javascript
基于Vuejs的搜索匹配功能实现方法
2018/03/03 Javascript
详解jQuery中的getAll()和cleanData()
2019/04/15 jQuery
原生JavaScript实现滑动拖动验证的示例代码
2019/12/06 Javascript
Node.js API详解之 util模块用法实例分析
2020/05/09 Javascript
[01:52]2014DOTA2西雅图邀请赛 V社开大会你不知道的小秘密
2014/07/08 DOTA
浅谈MySQL中的触发器
2015/05/05 Python
python模拟登录并且保持cookie的方法详解
2017/04/04 Python
Python之py2exe打包工具详解
2017/06/14 Python
Python中 map()函数的用法详解
2018/07/10 Python
Python3.5 + sklearn利用SVM自动识别字母验证码方法示例
2019/05/10 Python
详解pandas DataFrame的查询方法(loc,iloc,at,iat,ix的用法和区别)
2019/08/02 Python
Python实现socket非阻塞通讯功能示例
2019/11/06 Python
基于Python实现ComicReaper漫画自动爬取脚本过程解析
2019/11/11 Python
你应该知道的Python3.6、3.7、3.8新特性小结
2020/05/12 Python
详解用selenium来下载小姐姐图片并保存
2021/01/26 Python
Currentbody澳大利亚:美容仪专家
2019/11/11 全球购物
给校长的建议书200字
2014/05/16 职场文书
银行求职自荐信
2014/06/30 职场文书
公务员政审材料范文
2014/12/23 职场文书
大国崛起日本观后感
2015/06/02 职场文书
干部考核工作总结2015
2015/07/24 职场文书
电力企业职工培训心得体会
2016/01/11 职场文书
房屋转让协议书(标准范本)
2016/03/21 职场文书