前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >flask 操作数据库flask-sqlarchemy

flask 操作数据库flask-sqlarchemy

作者头像
用户5760343
发布2019-07-07 15:14:33
6620
发布2019-07-07 15:14:33
举报
文章被收录于专栏:sktjsktj

from flask import Flask, render_template, session, redirect, url_for, flash from flask_bootstrap import Bootstrap from flask_sqlalchemy import SQLAlchemy

app = Flask(name) bootstrap=Bootstrap(app) app.config['SECRET_KEY'] = 'hard to guess string' app.config['SQLALCHEMY_DATABASE_URI'] ='mysql+pymysql://root:123456@192.168.126.172/test' app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = True 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) def repr(self): return '<Role %r>' % self.name

autoincrement=True

class User(db.Model): tablename = 'users' id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(64), unique=True, index=True) def init(self, id, username): self.id = id self.username = username def repr(self): return '<User %r>' % self.username

db.create_all()

user1 = User(id=1,username = "jack")

user2 = User(id=2,username = "bob")

db.session.add_all([user1,user2])

db.session.commit()

results = db.session.query(User).all()

print(results)

db.session.query(User).filter_by(id=2).values('id', 'name' )

db.session.query(User).filter(User.name.endswith('jack')).all() # 获取role表中name_cn字段以管理员结尾的所有内容

user = db.session.query(User).filter_by(id=1).first() # 将role表中id为6的name改为change user.name = 'change' db.session.commit()

if name == 'main': app.run()


3、常用列 db.Integer SmallInteger BigInteger Float Numeric String Text Unicode UnicodeText Boolean Date Time DateTime Interval 时间间隔 Enum PickleType LargeBinary 二进制文件


primary_key unique index nullable default 4、外键引用 class Role(db.Model): # ... users = db.relationship('User', backref='role', lazy='dynamic') class User(db.Model): # ... role_id = db.Column(db.Integer, db.ForeignKey('roles.id'))

relationship中的参数:

backref 在关系的另一个模型中添加反向关系 lazy select,immediate,joined,subquery,noload,dynamic uselist 是否使用列表 order_by secondary secondaryjoin 5、DB操作 db.create_all() drop_all()

添加

db.session.add()

修改也是add

删除delete

查询

Role.query.all() User.query.filter_by(role=user_role).all() user_role = Role.query.filter_by(name='User').first()

filter() filter_by() limit() offset() order_by() group_by()


all() 以列表形式返回查询的所有结果 first() 返回查询的第一个结果,如果没有结果,则返回None first_or_404() 返回查询的第一个结果,如果没有结果,则终止请求,返回404 错误响应 get() 返回指定主键对应的行,如果没有对应的行,则返回None get_or_404() 返回指定主键对应的行,如果没找到指定的主键,则终止请求,返回404 错误响应 count() 返回查询结果的数量 paginate() 返回一个Paginate 对象,它包含指定范围内的结果 6、

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019.06.11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 模型
  • autoincrement=True
  • db.create_all()
  • user1 = User(id=1,username = "jack")
  • user2 = User(id=2,username = "bob")
  • db.session.add_all([user1,user2])
  • db.session.commit()
  • results = db.session.query(User).all()
  • print(results)
  • db.session.query(User).filter_by(id=2).values('id', 'name' )
  • db.session.query(User).filter(User.name.endswith('jack')).all() # 获取role表中name_cn字段以管理员结尾的所有内容
    • relationship中的参数:
    • 添加
    • 修改也是add
    • 删除delete
    • 查询
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档