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. c++ map内置类型的默认值(std::map default value for build-in type)

    大神的帖子,留着自己备忘:http://www.it1352.com/455626.html 结论:你看到的value是整数.浮点(初始化为零)的行为是由标准定义的,你可以依赖它. 网上还有好多帖子说 ...

  2. 在itop4412移植linux4.14和设备树遇到的问题及解决

    Linux4.14的设备树下已经对itop4412做了支持,本来应该很容易进行移植,可是在使用讯为给的资料中,对exynos4412-itop-scp-core.dtsi中原本的代码全部进行了注释,并 ...

  3. 「NOIP2016」换教室

    传送门 Description 对于刚上大学的牛牛来说,他面临的第一个问题是如何根据实际情况申请合适的课程. 在可以选择的课程中,有 $ 2n $ 节课程安排在 $ n $ 个时间段上.在第 $ i ...

  4. nginx配置自签名https

    nginx配置https是需要CA颁发证书的,为了测试方便,我们可以使用自签名证书 1.如何生成自签名证书 1.1:我们需要为服务端和客户端准备私钥和公钥: //生成服务器端私钥 openssl ge ...

  5. js函数如何传递多个参数

    应用场景: 需要根据多个参数来判断该数据所属,从而达到删除或者修改的目的. 比如删除区域下的分组,一个区域可以用多个分组,不同的区域可以有相同的分组,那么如何识别对应的分组呢??? 可以在对应的数据操 ...

  6. 方法型混淆js代码

    const fs = require('fs'); const acorn = require('acorn'); const walk = require("acorn-walk" ...

  7. 设计模式概要 & 六原则一法则

    参考文章 http://blog.csdn.net/sinat_26342009/article/details/46419873 继承vs组合:http://www.cnblogs.com/feic ...

  8. [Beta阶段]第二次Scrum Meeting

    Scrum Meeting博客目录 [Beta阶段]第二次Scrum Meeting 基本信息 名称 时间 地点 时长 第二次Scrum Meeting 19/05/03 大运村寝室6楼 40min ...

  9. RNN 一对一

    https://blog.csdn.net/owenfy/article/details/80022586

  10. jQuery的zTree插件

    写在前面 jQuery的 zTree插件 关键代码 <%@ page language="java" contentType="text/html; charset ...