在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 BeautifulSoup中文乱码问题的2种解决方法
Apr 22 Python
处理Python中的URLError异常的方法
Apr 30 Python
python实现二叉查找树实例代码
Feb 08 Python
Python读写docx文件的方法
May 08 Python
python3实现点餐系统
Jan 24 Python
Python实现Linux监控的方法
May 16 Python
Django Rest framework频率原理与限制
Jul 26 Python
图解python全局变量与局部变量相关知识
Nov 02 Python
win10系统下python3安装及pip换源和使用教程
Jan 06 Python
Python获取二维数组的行列数的2种方法
Feb 11 Python
关于Python字符串显示u...的解决方式
Mar 06 Python
django前端页面下拉选择框默认值设置方式
Aug 09 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
PHP5中使用PDO连接数据库的方法
2010/08/01 PHP
PHP实现根据数组某个键值大小进行排序的方法
2018/03/13 PHP
JavaScript flash复制库类 Zero Clipboard
2011/01/17 Javascript
jquery实现点击消失的代码
2014/03/03 Javascript
setInterval计时器不准的问题解决方法
2014/05/08 Javascript
JS实现图片无间断滚动代码汇总
2014/07/30 Javascript
前端轻量级MVC框架CanJS详解
2014/09/26 Javascript
swtich/if...else的替代语句
2015/08/16 Javascript
JS+CSS实现仿msn风格选项卡效果代码
2015/10/22 Javascript
AngularJS Module方法详解
2015/12/08 Javascript
jQuery Mobile中的button按钮组件基础使用教程
2016/05/23 Javascript
JS小数运算出现多为小数问题的解决方法
2016/06/02 Javascript
JQuery组件基于Bootstrap的DropDownList(完整版)
2016/07/05 Javascript
详解js静态检查工具eslint配置文件
2018/11/23 Javascript
JavaScript实现背景自动切换小案例
2019/09/27 Javascript
nodejs语言实现验证码生成功能的示例代码
2019/10/13 NodeJs
使用JavaScript通过前端发送电子邮件
2020/05/22 Javascript
Vue实现简单的留言板
2020/10/23 Javascript
[03:17]DOTA2-DPC中国联赛1月29日Recap集锦
2021/03/11 DOTA
Python安装第三方库及常见问题处理方法汇总
2016/09/13 Python
深入理解NumPy简明教程---数组2
2016/12/17 Python
Python之re操作方法(详解)
2017/06/14 Python
python matlibplot绘制多条曲线图
2021/02/19 Python
Python获取一个用户名的组ID过程解析
2019/09/03 Python
Python捕获异常堆栈信息的几种方法(小结)
2020/05/18 Python
使用pycharm和pylint检查python代码规范操作
2020/06/09 Python
python中的错误如何查看
2020/07/08 Python
台湾母婴用品限时团购:妈咪爱
2018/08/03 全球购物
韩国乐天网上商城:Lotte iMall
2021/02/03 全球购物
什么是数据库锁?Oracle中都有哪些类型的锁?
2015/08/21 面试题
Linux操作面试题
2012/05/16 面试题
文秘专业毕业生就业推荐信
2013/11/08 职场文书
矿泉水广告词
2014/03/20 职场文书
大学生考试作弊被抓检讨书
2014/12/27 职场文书
2015年七夕情人节活动方案
2015/05/06 职场文书
六年级上册《闻官军收河南河北》的教学设计
2019/11/15 职场文书