Flask-Sqlalchemy—基础查询

Flask-Sqlalchemy—基础查询

文章目录

  • Flask-Sqlalchemy—基础查询
        • 一、连接数据库
        • 二、创建所有表
        • 三、删除所有表
        • 四、插入行
        • 五、更新行
        • 六、删除行
        • 七、查询表

一、连接数据库

app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://user:password@host:port/dbname'

二、创建所有表

python
>>> from hello import db,Role,User
>>> db.create_all()

三、删除所有表

python
>>> from hello import db,Role,User
>>> db.drop_all()

四、插入行

# 插入单行
python
>>> from hello import db,Role,User
>>> db.session.add(Role(name='Admin'))
>>> db.session.commit()
>>> db.session.add(Role(name='Moderator'))
>>> db.session.add(Role(name='User'))
>>> db.session.commit()

# 插入多行
python
>>> from hello import db,Role,User
>>> db.session.add_all([User(username='john',role_id=1),User(username='susan',role_id=3),User(username='david',role_id=3)])
>>> db.session.commit()

五、更新行

python
>>> from hello import db,Role,User
>>> admin = Role.query.filter_by(name='Admin').first()
>>> admin.name='Administrator'
>>> db.session.commit()

六、删除行

python hello.py shell
>>> from hello import db,Role,User
>>> mod = Role.query.filter_by(name='Moderator').first()
>>> db.session.delete(mod)
>>> db.session.commit()

七、查询表

  • 查询表中全部数据

    # 注意,此处的查询结果完全取决于代码示例中的
    # def __repr__(self)
    # 这段函数,请各位小主们,好好斟酌下~
    python
    >>> from hello import db,Role,User
    >>> Role.query.all()
    [<Role u'Administrator'>, <Role u'User'>]
    >>> User.query.all()
    [<User u'john',Role id 1L>, <User u'susan',Role id 3L>, <User u'david',Role id 3L>]
    
  • 按照一个条件过滤数据记录(where)

    python
    >>> from hello import db,Role,User
    >>> Role.query.filter_by(name='Administrator').first()
    <Role u'Administrator'>
    >>> User.query.filter_by(role_id=3).all()
    [<User u'susan',Role id 3L>, <User u'david',Role id 3L>]
    >>> User.query.filter_by(role_id=3).first()
    <User u'susan',Role id 3L>
    
  • 按照两个条件过滤数据记录(where and)

    python
    >>> from hello import db,Role,User
    >>> User.query.filter_by(role_id=3,username='susan').first()
    <User u'susan',Role id 3L>
    >>> User.query.filter_by(role_id=3,username='susan').all()
    [<User u'susan',Role id 3L>]
    
  • 排序(order by)

    python
    >>> from hello import db,Role,User
    # 升序(asc)
    >>> User.query.order_by(User.role_id).all()
    [<User u'john',Role id 1L>, <User u'susan',Role id 3L>, <User u'david',Role id 3L>]
    # 降序(desc)
    >>> User.query.order_by(User.role_id.desc()).all()
    [<User u'susan',Role id 3L>, <User u'david',Role id 3L>, <User u'john',Role id 1L>]
    
  • 分组(group by)

    python hello.py shell
    >>> from hello import db,Role,User
    >>> User.query.group_by(User.role_id).all()
    [<User u'john',Role id 1L>, <User u'susan',Role id 3L>]
    
  • 限制(limit)

    python
    >>> from hello import db,Role,User
    >>> User.query.all()
    [<User u'john',Role id 1L>, <User u'susan',Role id 3L>, <User u'david',Role id 3L>]
    # limit 1
    >>> User.query.limit(1).all()
    [<User u'john',Role id 1L>]
    # limit 2,1
    >>> User.query.limit(1).offset(2).all()
    [<User u'david',Role id 3L>]
    >>> User.query.filter_by(role_id=3).all()
    [<User u'susan',Role id 3L>, <User u'david',Role id 3L>]
    # limit 1
    >>> User.query.filter_by(role_id=3).limit(1).all()
    [<User u'susan',Role id 3L>]
    # limit 1,1
    >>> User.query.filter_by(role_id=3).limit(1).offset(1).all()
    [<User u'david',Role id 3L>]
    

你可能感兴趣的:(#,python后端-Flask,#,orm-sqlalchemy)