Flask-SQLAlchemy牛刀小试

Flask-SQLAlchemy 牛刀小试

在Flask-SQLAlchemy中,插入、修改。删除操作,均由数据库会话管理
会话用db.session表示。在准备把数据写入数据库前,
要先将数据添加到会话中然后调用db.session.commit()方法提交会话。
在Flask-SQLAlchemy中,查询操作是通过query对象操作数据。
最基本的查询是返回表中的所有数据,可以通过过滤器进行更精准的数据库查询。

# 在视图函数中定义模型类
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
import pymysql

pymysql.install_as_MySQLdb()

app = Flask(__name__)   # flask入口

# 设置连接数据库的URL
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://账号:密码@127.0.0.1:3306/database_demo'
#设置数据库追踪信息,压制警告
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True

# 创建SQLAlchemy对象,读取app中的配置信息
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')

    # 重写__repr__方法,方便查看对象输出内容
    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相关联的表
    db.drop_all()
    # 创建所有和db相关联的表
    db.create_all()
    app.run(debug=True)

执行完代码,在数据库中就可以看到python flask建的两张表。

flask-sqlalchemy 和sqlalchemy的区别:

SQLAlchemy:

SQLAlchemy是一个关系型数据库框架,它提供了高层的 ORM 和底层的原生数据库的操作,让开发者不用直接和 SQL 语句打交道,而是通过 Python 对象来操作数据库,在舍弃一些性能开销的同时,换来的是开发效率的较大提升。一句话:就是对数据库的抽象!
Flask-SQLAlchemy:
Flask-SQLAlchemy是一个简化了 SQLAlchemy 操作的flask扩展,是SQLAlchemy的具体实现,封装了对数据库的基本操作。举例:如果说动物园是SQLAlchemy,那Flask-SQLAlchemy只是其中的一只。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值