from flask import Flask

from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
# app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = False
# app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
# app.config['SQLALCHEMY_ECHO'] = True # pip install mysql-connecto class Config(object):
'''配置参数''' SQLALCHEMY_DATABASE_URI = 'mysql+mysqlconnector://root:123456@127.0.0.1:3306/flask_db?charset=utf8'
#自动跟踪数据库
SQLALCHEMY_TRACK_MODIFICATIONS = True app.config.from_object(Config) db = SQLAlchemy(app) class User(db.Model):
__tablename__ = 'bd_user'
uid = db.Column(db.Integer,primary_key=True)
name = db.Column(db.String(64),unique=True)
email = db.Column(db.String(64),unique=True)
password = db.Column(db.String(255))
image = db.Column(db.String(255))
role_id = db.Column(db.Integer,db.ForeignKey('db_roles.rid')) class Role(db.Model):
__tablename__ = 'db_roles'
rid = db.Column(db.Integer,primary_key=True)
name = db.Column(db.String(64),unique=True)
users = db.relationship("User",backref="role") if __name__ == '__main__':
db.drop_all()
db.create_all()
role1 = Role(name="admin") # session记录对象任务
db.session.add(role1)
# 提交任务到数据库中
db.session.commit() role2 = Role(name='stuff')
db.session.add(role2)
db.session.commit() user1 = User(name='Tom',email='tom@163.com',password='123456',image='/upload/img-0000.jpg',role_id=role1.rid)
user2 = User(name='Jack',email='jack@163.com',password='654321',image='/upload/img-0000.jpg',role_id=role2.rid)
user3 = User(name='lili',email='lili@163.com',password='345678',image='/upload/img-0000.jpg',role_id=role1.rid)
user4 = User(name='Pack',email='pack@163.com',password='964152',image='/upload/img-0000.jpg',role_id=role2.rid) db.session.add_all([user1,user2,user3,user4])
db.session.commit() '''
Role.query.all() 查询所有 r2 = Role.query.first()
r3 = Role.query.get(2)
r3.name db.session.query(Role).all()
db.session.query(Role).get(2)
db.session.query(Role).first() User.query.filter_by() user = User.query.filter_by(name="Tom",role_id=1).first() user = User.query.filter(User.name=="Tom",User.role_id==1).first() 条件查询
from sqlalchemy import or_ User.query.filter(or_(User.name=="admin",User.email.endswith("163.com"))).all() User.query.filter().offset().limit().order_by().all() # offset跳过两条 limit取两条
User.query.offset(1).all()
User.query.offset(1).limit(2).all() #不推荐
User.query.order_by("-uid").all()
#推荐 降序
User.query.order_by(User.uid.desc()).all() #升序
User.query.order_by(User.uid).all()
User.query.order_by(User.uid.asc()).all() # 分组
from sqlalchemy import func
db.session.query(User.role_id,func.count(User.role_id)).group_by(User.role_id).all() '''

  

flask db操作的更多相关文章

  1. Flask 模型操作

    ORM 简称 ORM, O/RM, O/R Mapping 持久化模型 特征 数据表和编程类的映射 数据类型映射 字段属性映射类的属性和数据类型 关系映射 表于表之间的关系对应到 编程类的关系上 优点 ...

  2. 实验3、Flask数据库操作-如何使用Flask与数据库

    1. 实验内容 数据库的使用对于可交互的Web应用程序是极其重要的,本节我们主要学习如何与各种主要数据库进行连接和使用,以及ORM的使用 2. 实验要点 掌握Flask对于各种主要数据库的连接方法 掌 ...

  3. ceilometer alarm 创建过程中的DB操作及优化

    创建一个ceilometer alarm需要4次DB操作: api/controllers/v2/alarms.py 1. is_over_quota 每一次都需要查询该user/project的所有 ...

  4. 笔记-flask基础操作

    笔记-flask基础操作 1.      前言 本文为flask基础学习及操作笔记,主要内容为flask基础操作及相关代码. 2.      开发环境配置 2.1.    编译环境准备 安装相关Lib ...

  5. Thinkphp5.0 的Db操作

    Thinkphp5.0 的Db操作 连接操作: <?php namespace app\index\controller; use think\Controller; use think\Db; ...

  6. flask 运行 flask db init 报错,init-db 命令找不到

    flask init-db 结果是 `Error: No such command “init-db”. 那是因为init-db 已经被 flask db init 给代替了 运行 flask db ...

  7. Flask db init 抛出KeyError: 'migrate’这个问题

    问题 目录下执行flask db init 结果 抛出KeyError: 'migrate'这个问题 ## 原因 初始化Migrate对象时没有加db 解决: appfactory.py import ...

  8. 03 flask数据库操作、flask-session、蓝图

    ORM ORM 全拼Object-Relation Mapping,中文意为 对象-关系映射.主要实现模型对象到关系数据库数据的映射. 1.优点 : 只需要面向对象编程, 不需要面向数据库编写代码. ...

  9. flask数据库操作

    Python 数据库框架 大多数的数据库引擎都有对应的 Python 包,包括开源包和商业包.Flask 并不限制你使用何种类型的数据库包,因此可以根据自己的喜好选择使用 MySQL.Postgres ...

随机推荐

  1. ABP 04 用户的创建

    有这样一个问题,我忘记了密码,查了一下数据那张表,是加密了的,然后就有了这篇文章了. 往后台传的时候,还是传的明文. 请求的地址:/api/services/app/User/Create 用户还是挺 ...

  2. 信息学奥赛一本通 提高篇 序列第k个数 及 快速幂

    我是传送门 这个题首先是先判断是等差还是等比数列 等差的话非常简单: 前后两个数是等差的,举个栗子: 3 6 9 12 这几个数,(我感觉 1 2 3 4并说明不了什么) 每次都加3嘛,很容易看出,第 ...

  3. android常见错误之 No resource found that matches the given name

    新手上路,还希望大神多多照顾,刚自学android,遇到很多困难.其中就有这个问题,不知道你们遇到过没有,反正我是很头痛. No resource found that matches the giv ...

  4. zabbix 自动发现 监控 硬盘读写 disk io

    直接 上配置: 1.配置文件 cat userparameter_harddisk.conf #discovery hard diskUserParameter=custom.vfs.discover ...

  5. 使用Signature Tool自动生成P/Invoke调用Windows API的C#函数声明【转】

    原文链接:https://blog.csdn.net/Donjuan/article/details/3865026在网上看到很多网友在.NET程序中调用Win32 API,或者调用自己的VC DLL ...

  6. CloudFlare上线了新的Proxy Anything选项, 支持转发TCP连接

    https://www.nicho1as.wang/articles/cf-proxy-anything.html 申请地址:https://goo.gl/forms/Oc2jyyo0kXsrMyw3 ...

  7. rabbitmq在linux下单节点部署和基本使用

    RabbitMQ是基于erlang开发的消息服务,官网为:https://www.rabbitmq.com,RabbitMQ要依赖erlang运行,所以要先安装erlang环境,rabbitmq可以用 ...

  8. Shared variable in python's multiprocessing

    Shared variable in python's multiprocessing https://www.programcreek.com/python/example/58176/multip ...

  9. wordpress 访问其他数据库

    有时候我们需要在 Worpdress 中访问其他服务器上的数据库时,可以使用以下方式,在 functions.php 中添加如下代码: // 输入数据库配置参数$mydb = new wpdb('us ...

  10. Node.js 动态网页爬取 PhantomJS 使用入门(转)

    Node.js 动态网页爬取 PhantomJS 使用入门 原创NeverSettle101 发布于2017-03-24 09:34:45 阅读数 8309  收藏 展开 版权声明:本文为 winte ...