flask创建数据库连接池

这篇具有很好参考价值的文章主要介绍了flask创建数据库连接池。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

flask创建数据库连接池,flask,python,数据库,oracle

flask创建数据库连接池

在Python中,您可以使用 Flask-SQLAlchemy 这个扩展来创建一个数据库连接池。Flask-SQLAlchemy 是一个用于 Flask 框架的 SQLAlchemy 操作封装,实现了 ORM(Object Relational Mapper)。ORM 主要用于将类与数据库中的表建立映射关系,使得我们可以非常方便地通过操作类来操作数据库。

以下是 SQLAlchemy 的一些关键特点:

  • ORM(Object-Relational Mapping):SQLAlchemy 提供了一套完整的 ORM 系统,它可以将数据库表映射为 Python 类,将表中的行映射为这些类的实例,将列映射为实例的属性。通过这种映射,你可以使用面向对象的方式操作数据库,而不必编写 SQL 语句。
  • 数据库抽象:SQLAlchemy 提供了一套数据库抽象层,它可以适应多种数据库系统,如 MySQL、PostgreSQL、SQLite 等。通过这个抽象层,你可以使用相同的 API 操作不同的数据库系统。
  • SQL 表达式语言:除了 ORM,SQLAlchemy 还提供了一套 SQL 表达式语言,你可以用它来编写 SQL 语句。这个表达式语言提供了比原生 SQL 更高级的抽象,可以更方便地编写复杂的 SQL 语句。
  • 连接池和事务管理:SQLAlchemy 提供了一套连接池和事务管理机制,你可以用它来管理和复用数据库连接,处理事务。

在许多 Python web 框架(如 Flask、Pyramid 等)中,SQLAlchemy 都是默认或推荐的数据库操作库。它提供了许多强大的功能,使得数据库操作变得非常方便和高效。

以下是一种创建 Flask-SQLAlchemy 连接池的方式:

  1. 安装 Flask-SQLAlchemy。如果您还没有安装,可以使用以下命令进行安装:
pip install Flask-SQLAlchemy
  1. 在你的 Flask 应用中设置 SQLAlchemy 的数据库 URI 和连接池的大小:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://username:password@localhost/db_name'
app.config['SQLALCHEMY_POOL_SIZE'] = 20
db = SQLAlchemy(app)

上述代码中 'mysql://username:password@localhost/db_name' 是你的数据库连接信息,你需要替换为实际的值。SQLALCHEMY_POOL_SIZE 是连接池的大小,你可以根据实际需要设置。

  1. 使用 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)

    def __repr__(self):
        return '<User %r>' % self.username
  1. 您可以使用 db.session 来进行数据库事务,如增删查改等:
user = User(username='test', email='test@example.com')
db.session.add(user)
db.session.commit()

这样就实现了一个 Flask 的 SQLAlchemy 数据库连接池。请注意,如果数据库是 PostgreSQL 或其他类型,需要更改 SQLALCHEMY_DATABASE_URI 中的 'mysql://' 部分。

User模型解释

上述代码中的 User 是一个 SQLAlchemy 的模型,它表示了一个数据库表。在这个例子中,这个表的名称默认是 “user”,并且它有三个字段:id,username 和 email。

  • class User(db.Model): 这一行定义了 User 类,该类继承自 db.Model,所以它具有 SQLAlchemy Model 的所有属性和方法。
  • id = db.Column(db.Integer, primary_key=True) 这一行定义了一个名为 “id” 的列。该列的类型是 Integer,并且它被设置为表的主键。
  • username = db.Column(db.String(80), unique=True, nullable=False) 这一行定义了一个名为 “username” 的列。该列的类型是 String,长度最大为80。unique=True 意味着这个表中的 “username” 必须是唯一的,nullable=False 意味着这个列不能为 NULL。
  • email = db.Column(db.String(120), unique=True, nullable=False) 这一行定义了一个名为 “email” 的列。这个列的类型是 String,长度最大为120。同样地,unique=Truenullable=False 分别表示这个列必须具有唯一值,并且不能为 NULL。
  • def __repr__(self): 这是一个魔法方法,当你尝试打印一个 User 对象时,Python 会调用这个方法。在这个例子中,它将返回一个字符串,如 <User 'username'>

这个 User 模型可以用来操作数据库中的用户表。例如,你可以使用这个模型来查询用户,添加新的用户,或者删除用户。

下面是一个删除用户的例子:

user = User.query.filter_by(username='test').first()  # 查询用户名为 'test' 的用户
if user:
    db.session.delete(user)  # 如果用户存在,就删除这个用户
    db.session.commit()  # 提交事务
  • user = User.query.filter_by(username='test').first():这行代码查询数据库中用户名为 ‘test’ 的用户。filter_by() 是一个过滤方法,它返回满足条件的结果。first() 是一个查询方法,它返回查询结果的第一项。如果查询结果为空,那么 first() 将返回 None
  • if user::这个判断语句检查查询结果是否为 None。如果 userNone,说明数据库中没有用户名为 ‘test’ 的用户,因此我们不能删除它。如果 user 不是 None,说明我们找到了一个用户名为 ‘test’ 的用户,因此我们可以删除它。
  • db.session.delete(user):这行代码删除查询到的用户。delete() 方法接受一个 SQLAlchemy 模型的实例作为参数,并将其标记为待删除。
  • db.session.commit():这行代码提交事务,将所有的改动(包括删除操作)保存到数据库。如果你没有调用 commit(),那么 delete() 的改动不会被保存到数据库。

请注意,如果你尝试删除一个不存在的对象,SQLAlchemy 会抛出一个异常。所以在删除之前,你应该检查你的对象是否存在。

补充

虽然这个User类代表了数据库中的一个表,但是并不意味着这个表已经在数据库中创建了。在你第一次操作这个表之前,你需要确保这个表已经在数据库中创建。你可以使用 db.create_all() 方法来自动创建所有的表,或者你也可以手动在数据库中创建这个表:

  1. 使用 db.create_all() 方法。这个方法会自动创建所有定义的但尚未在数据库中存在的表。这个方法通常在 Flask 应用启动时运行一次,例如:

    from flask import Flask
    from flask_sqlalchemy import SQLAlchemy
    
    app = Flask(__name__)
    app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://username:password@localhost/db_name'
    db = SQLAlchemy(app)
    
    class User(db.Model):
        # ...
    
    db.create_all()
    
  2. 手动在数据库中创建这个表。你可以通过 SQL 语句或者数据库管理工具在数据库中创建这个表。

如果你尝试对一个在数据库中不存在的表进行操作(如查询、添加记录或删除记录),SQLAlchemy 会抛出一个错误。所以在操作表之前,你应该确保这个表已经在数据库中存在。文章来源地址https://www.toymoban.com/news/detail-618501.html

到了这里,关于flask创建数据库连接池的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 【Flask 连接数据库,使用Flask-Migrate实现数据库迁移及问题汇总】

    Flask 连接数据库,使用Flask-Migrate实现数据库迁移 安装Flask-Migrate插件 使用Flask-Migrate步骤 app.py主要用于数据库连接 model.py 中导入了 db,作用是存储一个User类 ,用于生成表头。 manager.py用于数据迁移管理,运行后将生成一个文件夹。 Flask-Migrate运行 问题汇总 问题一:flask_mig

    2024年01月16日
    浏览(25)
  • flask笔记 02 | Flask数据库连接(sqlite、mysql)

    flask笔记 02 | Flask数据库连接(sqlite、mysql)

    Flask没有指定使用的数据库,不像django提供了orm数据库抽象层,可以直接采用对象的方式操作数据库。但为了开发效率,在开发Flask项目中一般会选择 SQLALchemy 来操作数据库,类似django的ORM. SQLALchemy实际是对数据库的抽象,让开发者不直接使用sql语句进行开发,而是通过Pytho

    2024年01月25日
    浏览(10)
  • Oracle数据库创建存储过程

    下面是一个迁移数据库数据的存储过程: 存储过程中用到的 while 循环逻辑:  

    2024年02月11日
    浏览(6)
  • Flask 数据库 连接池、DBUtils、http 连接池

    Flask 数据库 连接池、DBUtils、http 连接池

    DBUtils 是一套用于管理 数据库 \\\" 连接池 \\\" 的Python包,为 \\\"高频度、高并发\\\"  的数据库访问提供更好的性能,可以自动管理连接对象的创建和释放。 并允许对非线程安全的数据库接口进行线程安全包装和连接。 该连接可在各种多线程环境中使用。 使用场景:如果使用的是流行

    2024年02月04日
    浏览(6)
  • flask-sqlalchemy连接数据库

    flask-sqlalchemy连接数据库

    1、安装flask_sqlalchemy和pymysql包 2、进行配置 使用Flask-SQLAlchemy扩展操作数据库,首先需要通过URL建立数据库连接,必须保存到Flask配置对象的SQLALCHEMY_DATABASE_URI中。 其中HOSTNAME为路由地址 PORT为端口号,我在创建数据库时没有更改,所以用的默认的3306端口号 DATABASE为数据库名字

    2024年02月06日
    浏览(10)
  • Java连接Oracle数据库

    Java连接Oracle数据库

    目录 第一步:导入jar包  第二步:配置数据库参数 Oracle配置参数:xml中配置 Mysql配置参数:xml方式配置 第三步:写一个工具类JDBCUtils 第四步:连接数据库 commons-dbutils-1.6.jar,jar包大家就到网上搜吧 Oracle配置参数:xml中配置 重点一: Oracle数据库的JDBC连接分为三种,服务名

    2024年02月13日
    浏览(11)
  • Navicat连接Oracle数据库

    Navicat连接Oracle数据库

    打开服务里面找到Oracle服务 OracleServerXE或者OracleServerTTL  创建数据库连接 连接名默认自己起 主机选择本地 端口默认 服务名在服务中可以找到输入后缀 用户名默认都是system 密码是创建oracle时候填写的口令 点击测试连接即可

    2024年02月04日
    浏览(16)
  • flask-session、数据库连接池

    flask-session、数据库连接池

    flask 自带session---》以cookie的形式放到了浏览器中---》加密 真正的session,是在服务端存储     -django中存在djangosession表中     -flask中,使用第三方,保存在---》redis中---》flask-session 使用步骤 高版本的flask出现一个问题:         用高版本:在app中放一个参数  app.sessio

    2024年02月14日
    浏览(6)
  • 【Oracle】使用 SQL Developer 连接 Oracle 数据库

    SQL Developer 是 Oracle 官方推出的一款免费的数据库开发工具,它提供了丰富的数据库开发功能,其中包括连接 Oracle 数据库的功能。 在本文中,我们将从多个方面详细阐述如何使用 SQL Developer 连接 Oracle 数据库。 在连接 Oracle 数据库前,需要需要做一些准备工作,包括安装 SQ

    2024年02月06日
    浏览(11)
  • C# 连接Oracle数据库方法

    C# 连接Oracle数据库方法

    C# 连接oracle数据库常用的三种方法有三种:     一、Oracle.ManagedDataAccess.dll:Oracle官方提供的oracle数据库访问组件,不存在其他依赖dll库,推荐该方法最为重要的是: 它 不需要安装oracle客户端,也不区分x86位和x64位 , 直接就能用,连上其他电脑或者服务端oracle数据库。  

    2023年04月22日
    浏览(14)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包