logo

Flask从入门到放弃五:SQLAlchemy介绍与快速使用、创建表插入数据、Scoped_session线程安全、基本增删查改、表模型、Flask-SQLAlchemy、Migrate的使用

作者:搬砖的石头2024.01.17 20:30浏览量:71

简介:本文将介绍SQLAlchemy,一个强大的Python SQL工具包和对象关系映射器,以及如何使用它来在Flask应用中进行数据库操作。包括创建表、插入数据、进行基本的增删查改操作,以及如何使用Flask-SQLAlchemy和Migrate进行数据库迁移。

在Flask应用的开发中,数据库是一个核心组件。SQLAlchemy是一个功能强大的Python SQL工具包和对象关系映射器(ORM),可以帮助开发者更轻松地处理数据库操作。下面我们将详细介绍SQLAlchemy的基本使用,以及如何在Flask应用中集成它。
一、SQLAlchemy介绍与快速使用
SQLAlchemy以其强大的功能和灵活的API而闻名,它支持多种数据库系统,包括MySQL、PostgreSQL、SQLite等。通过SQLAlchemy,你可以使用Python类来定义数据库结构,并使用Python代码来执行数据库操作。
下面是一个简单的示例,展示如何使用SQLAlchemy创建一个数据库连接,并执行一个简单的查询:

  1. from sqlalchemy import create_engine, Column, Integer, String
  2. from sqlalchemy.ext.declarative import declarative_base
  3. from sqlalchemy.orm import sessionmaker
  4. # 创建数据库引擎
  5. engine = create_engine('sqlite:///example.db')
  6. # 定义表模型
  7. Base = declarative_base()
  8. class User(Base):
  9. __tablename__ = 'users'
  10. id = Column(Integer, primary_key=True)
  11. name = Column(String)
  12. age = Column(Integer)
  13. # 创建表
  14. Base.metadata.create_all(engine)
  15. # 创建会话类
  16. Session = sessionmaker(bind=engine)
  17. # 创建会话对象
  18. session = Session()
  19. # 添加数据
  20. session.add_all([User(name='Alice', age=25), User(name='Bob', age=30)])
  21. # 提交事务,将数据保存到数据库中
  22. session.commit()
  23. # 查询数据
  24. users = session.query(User).all()
  25. for user in users:
  26. print(user.name, user.age)
  27. session.close()

在这个示例中,我们首先创建了一个SQLite数据库引擎。然后,我们定义了一个User表模型,包含了idnameage三个字段。接着,我们使用create_all()方法创建了表。接下来,我们创建了一个会话类Session和一个会话对象session。通过调用session.add_all()方法,我们将两个用户添加到会话中,然后调用session.commit()方法将数据保存到数据库中。最后,我们使用session.query()方法查询所有用户数据,并打印出每个用户的姓名和年龄。
二、创建表插入数据
在SQLAlchemy中,你可以使用Python类来定义数据库表结构。在定义类时,你可以指定每个字段的数据类型、是否为主键等属性。一旦你定义了表结构,就可以使用SQLAlchemy提供的API来创建表并将数据插入到表中。
下面是一个示例,展示如何创建一个名为users的表,并插入一些数据:
```python
from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker

创建数据库引擎

engine = create_engine(‘sqlite:///example.db’)

定义表模型

Base = declarativebase()
class User(Base):
_tablename
= ‘users’
id = Column(Integer, primary_key=True)
name = Column(String)
age = Column(Integer)

创建表

User.table.create(engine)

创建会话类

Session = sessionmaker(bind=engine)

创建会话对象

session = Session()

添加数据

session.add_all([User(name=’Alice’, age=25

相关文章推荐

发表评论