flask数据库练习---原创

栏目: Python · 发布时间: 7年前

内容简介:图解如下:注意:增删改都是通过db.session来操作的

图解如下:

注意:增删改都是通过db.session来操作的

flask数据库练习---原创

查的话是通过User.query.filter().all()

flask数据库练习---原创

sqlachemy程序以及测试数据如下:

from flask import Flask

from flask_script import Manager

from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)

app.config['DEBUG']=True

manage = Manager(app)

app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:mysql@127.0.0.1:3306/flask_test'

app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False

db = SQLAlchemy(app)

class Role(db.Model):

__tablename__ = 'roles'

id = db.Column(db.Integer,primary_key=True)
name = db.Column(db.String(64),unique = True)


us = db.relationship('User',backref='role')


def __repr__(self):
    return 'Role %s'% self.name

class User(db.Model):

__tablename__ = 'users'
id = db.Column(db.Integer,primary_key=True)
name = db.Column(db.String(64),unique=True,index=True)
email = db.Column(db.String(64),unique=True)
password=db.Column(db.String(64))
role_id = db.Column(db.Integer,db.ForeignKey('roles.id'))

def __repr__(self):
    return 'User:%s'%self.name

if name == '__main__':

db.drop_all()
db.create_all()
# app.run(debug=True)
# 创建测试数据
ro1 = Role(name='admin')
db.session.add(ro1)
db.session.commit()
# 再次插入一条数据
ro2 = Role(name='user')
db.session.add(ro2)
db.session.commit()

# 多条用户数据
us1 = User(name='wang', email='wang@163.com', password='123456', role_id=ro1.id)
us2 = User(name='zhang', email='zhang@189.com', password='201512', role_id=ro2.id)
us3 = User(name='chen', email='chen@126.com', password='987654', role_id=ro2.id)
us4 = User(name='zhou', email='zhou@163.com', password='456789', role_id=ro1.id)
us5 = User(name='tang', email='tang@itheima.com', password='158104', role_id=ro2.id)
us6 = User(name='wu', email='wu@gmail.com', password='5623514', role_id=ro2.id)
us7 = User(name='qian', email='qian@gmail.com', password='1543567', role_id=ro1.id)
us8 = User(name='liu', email='liu@itheima.com', password='867322', role_id=ro1.id)
us9 = User(name='li', email='li@163.com', password='4526342', role_id=ro2.id)
us10 = User(name='sun', email='sun@163.com', password='235523', role_id=ro2.id)
db.session.add_all([us1, us2, us3, us4, us5, us6, us7, us8, us9, us10])
db.session.commit()

manage.run(default_command='runserver')

测试指令如下:

注意返回的数据是根据自定义的repr方法返回值显示的。filter模糊查询,filter_by精确查询,两者返回的都是查询集。

查询所有用户数据

User.query.all()

查询有多少个用户

User.query.count()

查询第1个用户

User.query.first()

查询id为4的用户[3种方式]

User.query.get(4)

User.query.filter(User.id==4).all()

User.query.filter_by(id=4).all()

查询名字结尾字符为g的所有数据[开始/包含]

User.query.filter(User.name.endswith('g')).all()

User.query.filter(User.name.contains('g')).all()

查询名字不等于wang的所有数据[2种方式]

User.query.filter(User.name!='wang').all()

from sqlalchemy import not_

User.query.filter(not_(User.name=='wang')).all()

查询名字和邮箱都以 li 开头的所有数据[2种方式

from sqlalchemy import and_

User.query.filter(and_(User.name.startswith('li'),User.email.startswith('li')).all()

User.query.filter(User.name.startswith('li'),User.email.startswith('li')).all()

查询password是 123456 或者 email 以 itheima.com 结尾的所有数据

from sqlalchemy import or_

User.query.filter(or_(User.password=='123456',User.email.endswith('itheima.com'))).all()

查询id为 [1, 3, 5, 7, 9] 的用户列表

User.query.filter(User.id.in_([1,3,5,7,9])).all()

查询name为liu的角色数据

Role.query.filter(Role.id==User.query.filter(User.name=='liu').first().role_id).first()

可以简化为

User.query.filter(User.name=='liu').first().role

查询该角色有哪些用户扮演了

Role.query.get(1).users

查询所有用户数据,并以邮箱排序

User.query.order_by('email').all()

User.query.order_by(User.email.desc()).all()

每页3个,查询第2页的数据

it = User.query.paginate(2,3,False)

it.pages -----总页数

it.page -----当前页

it.items -----当前页的数据

------limit-----

User.query.limit(3).all()


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Hacking

Hacking

Jon Erickson / No Starch Press / 2008-2-4 / USD 49.95

While other books merely show how to run existing exploits, Hacking: The Art of Exploitation broke ground as the first book to explain how hacking and software exploits work and how readers could deve......一起来看看 《Hacking》 这本书的介绍吧!

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具