在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 相关文章推荐
java直接调用python脚本的例子
Feb 16 Python
python自动zip压缩目录的方法
Jun 28 Python
python用Pygal如何生成漂亮的SVG图像详解
Feb 10 Python
深入了解Python中pop和remove的使用方法
Jan 09 Python
完美解决Python 2.7不能正常使用pip install的问题
Jun 12 Python
django如何自己创建一个中间件
Jul 24 Python
在pycharm中配置Anaconda以及pip源配置详解
Sep 09 Python
Python callable内置函数原理解析
Mar 05 Python
pycharm实现print输出保存到txt文件
Jun 01 Python
python实现邮件循环自动发件功能
Sep 11 Python
使用Python Tkinter实现剪刀石头布小游戏功能
Oct 23 Python
Python中的socket网络模块介绍
Jul 23 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 for 循环语句使用方法详细说明
2010/05/09 PHP
PHP比你想象的好得多
2014/11/27 PHP
PHP函数引用返回的实例详解
2016/09/11 PHP
PHP等比例压缩图片的实例代码
2018/07/26 PHP
Centos7安装swoole扩展操作示例
2020/03/26 PHP
THREE.JS入门教程(6)创建自己的全景图实现步骤
2013/01/25 Javascript
JQuery onload、ready概念介绍及使用方法
2013/04/27 Javascript
jQuery+AJAX实现网页无刷新上传
2015/02/22 Javascript
jquery+html5烂漫爱心表白动画代码分享
2015/08/24 Javascript
jQuery插件实现文字无缝向上滚动效果代码
2016/02/25 Javascript
js正则表达式replace替换变量方法
2016/05/21 Javascript
JS动态添加选项案例分析
2016/10/17 Javascript
在js里怎么实现Xcode里的callFuncN方法(详解)
2016/11/05 Javascript
JavaScript中数组Array方法详解
2017/02/27 Javascript
使用原生js写ajax实例(推荐)
2017/05/31 Javascript
小程序云开发实现数据库异步操作同步化
2019/05/18 Javascript
JS数据类型判断的几种常用方法
2020/07/07 Javascript
python模块restful使用方法实例
2013/12/10 Python
Python映射拆分操作符用法实例
2015/05/19 Python
Windows下安装Django框架的方法简明教程
2018/03/28 Python
Python之文字转图片方法
2018/05/10 Python
python实现决策树分类
2018/08/30 Python
python保存二维数组到txt文件中的方法
2018/11/15 Python
pandas读取CSV文件时查看修改各列的数据类型格式
2019/07/07 Python
Python-jenkins 获取job构建信息方式
2020/05/12 Python
HTML5对比HTML4的主要改变和改进总结
2016/05/27 HTML / CSS
德国隐形眼镜店:LuckyLens
2018/07/29 全球购物
Sisley法国希思黎中国官网:享誉全球的奢华植物美容品牌
2019/06/30 全球购物
利用指针变量实现队列的入队操作
2012/04/07 面试题
阿里巴巴Oracle DBA笔试题答案-备份恢复类
2013/11/20 面试题
nohup的用法
2012/11/26 面试题
个人求职信范文分享
2014/01/06 职场文书
幼儿园实习生辞职信
2014/01/20 职场文书
综合实践活动方案
2014/02/14 职场文书
党员一帮一活动总结
2014/07/08 职场文书
复试通知单模板
2015/04/24 职场文书