【Python后端开发】Flask之ORM数据库操作

 

一、前言

ORM 对象映射关系程序。

通过orm将编程语言的对象模型和数据库的关系模型建立映射关系,这样我们在使用编程语言对数据库进行操作的时候可以直接使用编程语言的对象模型进行操作就可以了,而不用直接使用sql语言。

orm的优点:

  1. 隐藏了数据访问细节,“封闭”的通用数据库交互,ORM的核心。他使得我们的通用数据库交互变得简单易行,并且完全不用考虑该死的SQL语句。快速开发,由此而来。
  2. ORM使我们构造固化数据结构变得简单易行。

缺点:

  1. 无可避免的,自动化意味着映射和关联管理,代价是牺牲性能(早期,这是所有不喜欢ORM人的共同点)。现在的各种ORM框架都在尝试使用各种方法来减轻这块(LazyLoad,Cache),效果还是很显著的。

最有名的ORM框架是SQLAlchemy,系统中没有该模块的需要安装 pip  install flask-sqlalchemy

如果在pip  install flask-sqlalchemy 中报ReadTimeoutError: HTTPSConnectionPool(host='files.pythonhosted.org'错,需要先设置超时时间:pip --default-timeout=100 install -U Pillow,再重新安装 pip  install flask-sqlalchemy,通过imort flask-sqlalchemy验证是否安装正常。

 

二、连接数据库

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
# 配置数据库的详细信息
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://数据库用户名:数据库密码@数据库主机:数据库端口/数据库名称'
# 初始化一个db
db = SQLAlchemy(app)

 

 

 

三、映射数据库表

User表结构

# 使用db,可以让类映射到数据库中的表
class User(db.Model):


    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80), unique=True, nullable=False)
    email = db.Column(db.String(120), unique=True, nullable=False)
    email2 = db.Column(db.String(120), unique=True, nullable=False)
    email3 = db.Column(db.String(120), unique=False, nullable=False)

    def __repr__(self):
        return f'<User {self.username} {self.email}>'

primary_key:主键

unique:是否可以重复

nullable:是否可以为空

__repr__:打印SQL结果

 

posted @ 2022-07-25 09:20  Owen_ET  阅读(833)  评论(0编辑  收藏  举报