平度市网站建设,烟台市做网站找哪家好,腾讯企业网页设计,故事式软文范例500字flask创建数据库连接池
在Python中#xff0c;您可以使用 Flask-SQLAlchemy 这个扩展来创建一个数据库连接池。Flask-SQLAlchemy 是一个用于 Flask 框架的 SQLAlchemy 操作封装#xff0c;实现了 ORM(Object Relational Mapper)。ORM 主要用于将类与数据库中的表建立映射关系…
flask创建数据库连接池
在Python中您可以使用 Flask-SQLAlchemy 这个扩展来创建一个数据库连接池。Flask-SQLAlchemy 是一个用于 Flask 框架的 SQLAlchemy 操作封装实现了 ORM(Object Relational Mapper)。ORM 主要用于将类与数据库中的表建立映射关系使得我们可以非常方便地通过操作类来操作数据库。
以下是 SQLAlchemy 的一些关键特点
ORMObject-Relational MappingSQLAlchemy 提供了一套完整的 ORM 系统它可以将数据库表映射为 Python 类将表中的行映射为这些类的实例将列映射为实例的属性。通过这种映射你可以使用面向对象的方式操作数据库而不必编写 SQL 语句。数据库抽象SQLAlchemy 提供了一套数据库抽象层它可以适应多种数据库系统如 MySQL、PostgreSQL、SQLite 等。通过这个抽象层你可以使用相同的 API 操作不同的数据库系统。SQL 表达式语言除了 ORMSQLAlchemy 还提供了一套 SQL 表达式语言你可以用它来编写 SQL 语句。这个表达式语言提供了比原生 SQL 更高级的抽象可以更方便地编写复杂的 SQL 语句。连接池和事务管理SQLAlchemy 提供了一套连接池和事务管理机制你可以用它来管理和复用数据库连接处理事务。
在许多 Python web 框架如 Flask、Pyramid 等中SQLAlchemy 都是默认或推荐的数据库操作库。它提供了许多强大的功能使得数据库操作变得非常方便和高效。
以下是一种创建 Flask-SQLAlchemy 连接池的方式
安装 Flask-SQLAlchemy。如果您还没有安装可以使用以下命令进行安装
pip install Flask-SQLAlchemy在你的 Flask 应用中设置 SQLAlchemy 的数据库 URI 和连接池的大小
from flask import Flask
from flask_sqlalchemy import SQLAlchemyapp Flask(__name__)
app.config[SQLALCHEMY_DATABASE_URI] mysql://username:passwordlocalhost/db_name
app.config[SQLALCHEMY_POOL_SIZE] 20
db SQLAlchemy(app)
上述代码中 mysql://username:passwordlocalhost/db_name 是你的数据库连接信息你需要替换为实际的值。SQLALCHEMY_POOL_SIZE 是连接池的大小你可以根据实际需要设置。
使用 db 对象进行数据库操作。例如定义一个模型
class User(db.Model):id db.Column(db.Integer, primary_keyTrue)username db.Column(db.String(80), uniqueTrue, nullableFalse)email db.Column(db.String(120), uniqueTrue, nullableFalse)def __repr__(self):return User %r % self.username您可以使用 db.session 来进行数据库事务如增删查改等
user User(usernametest, emailtestexample.com)
db.session.add(user)
db.session.commit()这样就实现了一个 Flask 的 SQLAlchemy 数据库连接池。请注意如果数据库是 PostgreSQL 或其他类型需要更改 SQLALCHEMY_DATABASE_URI 中的 mysql:// 部分。
User模型解释
上述代码中的 User 是一个 SQLAlchemy 的模型它表示了一个数据库表。在这个例子中这个表的名称默认是 “user”并且它有三个字段idusername 和 email。
class User(db.Model): 这一行定义了 User 类该类继承自 db.Model所以它具有 SQLAlchemy Model 的所有属性和方法。id db.Column(db.Integer, primary_keyTrue) 这一行定义了一个名为 “id” 的列。该列的类型是 Integer并且它被设置为表的主键。username db.Column(db.String(80), uniqueTrue, nullableFalse) 这一行定义了一个名为 “username” 的列。该列的类型是 String长度最大为80。uniqueTrue 意味着这个表中的 “username” 必须是唯一的nullableFalse 意味着这个列不能为 NULL。email db.Column(db.String(120), uniqueTrue, nullableFalse) 这一行定义了一个名为 “email” 的列。这个列的类型是 String长度最大为120。同样地uniqueTrue 和 nullableFalse 分别表示这个列必须具有唯一值并且不能为 NULL。def __repr__(self): 这是一个魔法方法当你尝试打印一个 User 对象时Python 会调用这个方法。在这个例子中它将返回一个字符串如 User username。
这个 User 模型可以用来操作数据库中的用户表。例如你可以使用这个模型来查询用户添加新的用户或者删除用户。
下面是一个删除用户的例子
user User.query.filter_by(usernametest).first() # 查询用户名为 test 的用户
if user:db.session.delete(user) # 如果用户存在就删除这个用户db.session.commit() # 提交事务user User.query.filter_by(usernametest).first()这行代码查询数据库中用户名为 ‘test’ 的用户。filter_by() 是一个过滤方法它返回满足条件的结果。first() 是一个查询方法它返回查询结果的第一项。如果查询结果为空那么 first() 将返回 None。if user:这个判断语句检查查询结果是否为 None。如果 user 为 None说明数据库中没有用户名为 ‘test’ 的用户因此我们不能删除它。如果 user 不是 None说明我们找到了一个用户名为 ‘test’ 的用户因此我们可以删除它。db.session.delete(user)这行代码删除查询到的用户。delete() 方法接受一个 SQLAlchemy 模型的实例作为参数并将其标记为待删除。db.session.commit()这行代码提交事务将所有的改动包括删除操作保存到数据库。如果你没有调用 commit()那么 delete() 的改动不会被保存到数据库。
请注意如果你尝试删除一个不存在的对象SQLAlchemy 会抛出一个异常。所以在删除之前你应该检查你的对象是否存在。
补充
虽然这个User类代表了数据库中的一个表但是并不意味着这个表已经在数据库中创建了。在你第一次操作这个表之前你需要确保这个表已经在数据库中创建。你可以使用 db.create_all() 方法来自动创建所有的表或者你也可以手动在数据库中创建这个表 使用 db.create_all() 方法。这个方法会自动创建所有定义的但尚未在数据库中存在的表。这个方法通常在 Flask 应用启动时运行一次例如 from flask import Flask
from flask_sqlalchemy import SQLAlchemyapp Flask(__name__)
app.config[SQLALCHEMY_DATABASE_URI] mysql://username:passwordlocalhost/db_name
db SQLAlchemy(app)class User(db.Model):# ...db.create_all()手动在数据库中创建这个表。你可以通过 SQL 语句或者数据库管理工具在数据库中创建这个表。
如果你尝试对一个在数据库中不存在的表进行操作如查询、添加记录或删除记录SQLAlchemy 会抛出一个错误。所以在操作表之前你应该确保这个表已经在数据库中存在。