下面我将分步骤详细讲解 Python SQLAlchemy 入门教程的完整攻略。
1. 前言
Python SQLAlchemy 是 Python中一款优秀的 ORM 框架,它可以将关系数据库中的表结构映射到 Python 对象上,并支持使用对象操作数据库。
2. 准备工作
在开始之前,我们需要准备一些工作:
- 安装必要的依赖,包括 SQLAlchemy 和 pymysql。
- 安装 MySQL 数据库并启动 MySQL 服务。
安装方式如下:
pip install sqlalchemy pymysql
sudo apt-get install mysql-server
3. 建立数据库连接
在建立数据库连接之前,我们需要定义一些与数据库相关的参数,如数据库名称、账号、密码等。在本示例中,我们使用 MySQL 作为示例数据库,并使用 root 用户访问数据库。
from sqlalchemy import create_engine
DB_NAME = 'test_db'
DB_USER = 'root'
DB_PASSWORD = 'password'
DB_HOST = 'localhost'
DB_PORT = '3306'
engine = create_engine(f'mysql+pymysql://{DB_USER}:{DB_PASSWORD}@{DB_HOST}:{DB_PORT}/{DB_NAME}', echo=True)
注意:在这里我们使用了 f-string 来动态构建和数据库相关的连接字符串
4. 建立数据模型
在 SQLAlchemy 中,数据模型通常由 Python 类来表示,每个类代表数据库中的一个表,类属性则代表表中的字段。在本示例中,我们定义一个 User 类,并将其映射到数据库的 user 表中。
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String
Base = declarative_base()
class User(Base):
__tablename__ = 'user'
id = Column(Integer, primary_key=True)
name = Column(String(50), nullable=False)
age = Column(Integer, nullable=False)
注意:定义的类中必须要包含 tablename 属性,该属性用于指定将该类映射到数据库中的哪个表中。
5. 创建表结构
在映射定义好的数据模型之后,我们需要创建对应的数据库表结构。可以使用 SQLAlchemy 中 Base 类的 metadata 属性创建表结构。
Base.metadata.create_all(engine)
6. 插入数据
在创建好表结构之后,我们就可以使用 Python 中的对象操作数据库了。我们可以通过定义类对象的方式,向数据库中插入一条记录。
from sqlalchemy.orm import sessionmaker
Session = sessionmaker(bind=engine)
session = Session()
user = User(name='Lucy', age=18)
session.add(user)
session.commit()
# 打印插入的数据信息
print(user.id, user.name, user.age)
7. 查询数据
在插入了一条记录之后,我们可以通过 SQLAlchemy 提供的 API,从数据库中查询记录。我们使用 .query() 方法来创建一个查询对象,该对象可以调用 SQLAlchemy 中提供的各种查询 API,如 filter、limit 等。
# 查询所有数据
users = session.query(User).all()
for u in users:
print(u.id, u.name, u.age)
# 根据条件查询数据
user = session.query(User).filter_by(name='Lucy').first()
if user:
print(user.id, user.name, user.age)
else:
print('无记录')
总结
至此,我们已经成功完成了一个基本的使用 Python SQLAlchemy 操作 MySQL 数据库的示例。在实际项目中,我们可以通过 ORM 框架更加方便和高效地操作数据库,并且能够避免 SQL 注入等安全问题,提高应用程序的安全性。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python SQLAlchemy入门教程(基本用法) - Python技术站