Python Flask框架 -- ORM模型与表的映射

ORM模型
对象关系映射(Object Relationship Mapping),简称ORM,是一种可以用Python面向对象的方式来操作关系型数据库的技术,具有可以映射到数据库表能力的Python类我们称之为ORM模型。一个ORM模型与数据库中一个表相对应,ORM模型中的每个类属性分别对应表的每个字段,ORM模型的每个实例对象对应表中每条记录。ORM技术提供了面向对象与SQL交互的桥梁,让开发者用面向对象的方式操作数据库,使用ORM模型具有以下优势。
(1)开发效率高:几乎不需要写原生SQL语句,使用纯Python的方式操作数据库,大大的提高了开发效率。
(2)安全性高:ORM模型底层代码对一些常见的安全问题,比如SQL注入做了防护,比直接使用SQL语句更加安全。
(3)灵活性强:Flask-SQLAlchemy底层支持SQLite、MySQL、Oracle、PostgreSQL等关系型数据库,但针对不同的数据库,ORM模型代码几乎一模一样,只需修改少量代
码,即可完成底层数据库的更换。
下面我们用Flask-SQLAlchemy来创建一个User模型,示例代码如下。

class User(db.Model):
    __tablename__ = 'user'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    username = db.Column(db.String(100), nullable=False)
    password = db.Column(db.String(100), nullable=False)


with app.app_context():  # 请求应用上下文
    db.create_all()  # 把所有的表同步到数据库中去

首先我们创建一个类名叫User,并使得他继承自db.Model,所有ORM模型必须是db.Model的直接或者间接子类。然后通过tablename属性,指定User模型映射到数据库中表的名称.接着我们定义了三个db.Column类型的类属性,分别是id、username、password,只有使用db.Column定义的类属性,才会被映射到数据库表中成为字段。在这个User模型中,id是db.Integer类型,在数据库中将表现为整形,并且传递primary_key=True参数来指定id作为主键,传递autoincrement=-True来设置id为自增长,接下来的username和password,我们分别指定其类型为db.String类型,在数据库中将表现为varchar类型,并且指定其最大长度为100。

 app.py 完整代码:

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from sqlalchemy import text

app = Flask(__name__)

# MySQL所在的主机名或域名
HOSTNAME = '127.0.0.1'
# MySQL监听的端口号,默认3306
PORT = 3306
# 连接MySQL的用户名,用自己的
USERNAME = 'root'
# 连接MySQL的密码,用自己的
PASSWORD = '***'
# MySQL上创建的数据库名称
DATABASE = 'database_learn'

app.config[
    'SQLALCHEMY_DATABASE_URI'] = f'mysql+pymysql://{USERNAME}:{PASSWORD}@{HOSTNAME}:{PORT}/{DATABASE}?charset=utf8mb4'

# 在app.config中设置好连接数据库的信息
# 然后使用SQLAlchemy(app)创建一个db对象
# SQLAlchemy会自动读取app.config中连接数据库的信息
db = SQLAlchemy(app)


class User(db.Model):
    __tablename__ = 'user'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    username = db.Column(db.String(100), nullable=False)
    password = db.Column(db.String(100), nullable=False)


with app.app_context():  # 请求应用上下文
    db.create_all()  # 把所有的表同步到数据库中去


@app.route('/')
def hello_world():
    return 'Hello World!'


if __name__ == '__main__':
    app.run()

先在 MySQL 中创建好数据库 database_learn ,然后运行 app.py ,此时在数据库中刷新就可以看到有 user 表被创建了出来,点击设计表,然后就能看到表的字段与类型了。

           

 

  • 10
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python Flask框架中使用数据库的一种常见方式是通过ORM(对象关系映射框架来操作数据库,比如使用SQLAlchemy。ORM框架可以帮助我们将数据库操作转化为面向对象的方式,而不需要直接使用SQL语句。 在使用Python Flask框架中的ORM框架SQLAlchemy进行数据库操作时,可以按照以下步骤进行: 1. 导入所需的模块和类,包括Flask和SQLAlchemy。 2. 创建一个Flask应用程序实例。 3. 配置数据库连接信息,包括数据库类型、用户名、密码、主机和端口等。 4. 创建一个数据库模型类,该类对应数据库中的格,并定义各个字段的属性和关联关系。 5. 在应用程序中使用该模型类进行数据库操作,比如查询、插入、更新和删除等。 6. 在需要的时候提交或回滚事务。 以下是一个简单的示例代码,展示了如何在Python Flask框架中使用SQLAlchemy进行数据库操作: ``` # 导入所需的模块和类 from flask import Flask from flask_sqlalchemy import SQLAlchemy # 创建Flask应用程序实例 app = Flask(__name__) # 配置数据库连接信息 app.config['SQLALCHEMY_DATABASE_URI'] = '数据库连接信息' # 创建SQLAlchemy对象 db = SQLAlchemy(app) # 创建数据库模型类 class Movie(db.Model): id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String(100), nullable=False) director = db.Column(db.String(50)) year = db.Column(db.Integer) # 在应用程序中使用模型类进行数据库操作 @app.route('/') def index(): # 查询电影列 movies = Movie.query.all() return str(movies) # 启动应用程序 if __name__ == '__main__': app.run() ``` 在上述示例代码中,我们使用了SQLAlchemy对数据库进行操作。通过定义模型类Movie,并在应用程序中进行查询操作,可以获取到数据库中的电影列。 需要注意的是,具体的数据库连接信息需要根据实际情况进行配置,比如数据库类型、用户名、密码、主机和端口等。 总结来说,在Python Flask框架中使用ORM框架SQLAlchemy可以帮助我们简化数据库操作,不需要直接使用SQL语句,而是通过定义模型类和使用ORM框架提供的方法来进行数据库操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值