在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 SDK写一个同步脚本及使用教程
Aug 23 Python
Python 装饰器使用详解
Jul 29 Python
对python程序内存泄漏调试的记录
Jun 11 Python
浅谈Python反射 &amp; 单例模式
Mar 21 Python
Python Numpy 控制台完全输出ndarray的实现
Feb 19 Python
django-csrf使用和禁用方式
Mar 13 Python
Python中Yield的基本用法
Oct 18 Python
关于Python3的import问题(pycharm可以运行命令行import错误)
Nov 18 Python
python爬虫中url管理器去重操作实例
Nov 30 Python
python pyhs2 的安装操作
Apr 07 Python
解决jupyter notebook启动后没有token的坑
Apr 24 Python
PyCharm 配置SSH和SFTP连接远程服务器
May 11 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下使用curl模拟用户登陆的代码
2010/09/10 PHP
php中定时计划任务的实现原理
2013/01/08 PHP
php数组排序usort、uksort与sort函数用法
2014/11/17 PHP
php通过记录IP来防止表单重复提交方法分析
2014/12/16 PHP
php安装php_rar扩展实现rar文件读取和解压的方法
2016/11/17 PHP
javascript 节点排序 2
2011/01/31 Javascript
jQuery中focus事件用法实例
2014/12/26 Javascript
jQuery实现拖拽效果插件的方法
2015/03/23 Javascript
javascript中JSON对象与JSON字符串相互转换实例
2015/07/11 Javascript
js模仿php中strtotime()与date()函数实现方法
2015/08/11 Javascript
JS实现自动切换文字的导航效果代码
2015/08/27 Javascript
原生js实现无缝轮播图效果
2017/01/11 Javascript
knockoutjs模板实现树形结构列表
2017/07/31 Javascript
Vue仿支付宝支付功能
2018/05/25 Javascript
详解JavaScript中的坐标和距离
2019/05/27 Javascript
JS代码屏蔽F12,右键,粘贴,复制,剪切,选中,操作实例
2019/09/17 Javascript
js实现点击按钮随机生成背景颜色
2020/09/05 Javascript
[01:18:43]2014 DOTA2华西杯精英邀请赛5 24 iG VS DK
2014/05/25 DOTA
使用Python编写简单的画图板程序的示例教程
2015/12/08 Python
python实现Windows电脑定时关机
2018/06/20 Python
Python实现的各种常见分布算法示例
2018/12/13 Python
python生成带有表格的图片实例
2019/02/03 Python
class类在python中获取金融数据的实例方法
2020/12/10 Python
python 爬取腾讯视频评论的实现步骤
2021/02/18 Python
中国旅游网站:途牛旅游网
2019/09/29 全球购物
西雅图的买手店:Totokaelo
2019/10/19 全球购物
求高于平均分的学生学号及成绩
2016/09/01 面试题
SQL Server 2000数据库的文件有哪些,分别进行描述。
2015/11/09 面试题
酒店led欢迎词
2014/01/09 职场文书
公司门卫的岗位职责
2014/02/19 职场文书
办理护照工作证明
2014/10/10 职场文书
乡镇党的群众路线教育实践活动制度建设计划
2014/11/03 职场文书
入党积极分子党小组意见
2015/06/02 职场文书
爱国之歌(8首)
2019/09/29 职场文书
从零开始在Centos7上部署SpringBoot项目
2022/04/07 Servers
Mysql排查分析慢sql之explain实战案例
2022/04/19 MySQL