对象关系映射(ORM)是一种将数据库记录映射为易于操作的对象的技术。在Python世界中,SQLAlchemy是最受欢迎的ORM之一,它提供了一个强大的模型系统和灵活的查询语言。本博客将为你展示如何在Python中使用SQLAlchemy ORM来操作数据库。
安装SQLAlchemy
在开始之前,你需要确保已经在你的Python环境中安装了SQLAlchemy。可以通过pip命令来安装:
pip install SQLAlchemy
配置数据库连接
在Python代码中,首先需要配置SQLAlchemy的连接字符串并创建一个引擎:
from sqlalchemy import create_engine
# Postgres为例
engine = create_engine('postgresql://username:password@localhost/mydatabase')
定义模型
在SQLAlchemy中,你需要定义模型,模型是Python类,它们映射到数据库表:
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String, Float
Base = declarative_base()
class Product(Base):
__tablename__ = 'products'
id = Column(Integer, primary_key=True)
name = Column(String)
price = Column(Float)
def __repr__(self):
return f"<Product(name={self.name}, price={self.price})>"
创建数据库表
定义好模型后,可以使用SQLAlchemy来创建数据库表:
Base.metadata.create_all(engine)
开始会话
SQLAlchemy使用会话来管理对数据库的操作:
from sqlalchemy.orm import sessionmaker
Session = sessionmaker(bind=engine)
session = Session()
插入数据
通过实例化模型并添加到会话中来插入数据到数据库:
new_product = Product(name='Chair', price=59.99)
session.add(new_product)
session.commit()
查询数据
可以使用会话来执行查询,返回的是模型的实例:
for product in session.query(Product).filter_by(name='Chair'):
print(product)
更新数据
更新数据涉及检索一个对象,修改它的属性,然后提交会话:
product = session.query(Product).filter_by(name='Chair').first()
if product:
product.price = 69.99
session.commit()
删除数据
删除数据涉及检索一个对象,然后将其从会话中删除:
product = session.query(Product).filter_by(name='Chair').first()
if product:
session.delete(product)
session.commit()
结语
SQLAlchemy提供了一种高层次的抽象来操作数据库,允许开发者以更加自然的面向对象的方式来交互。虽然涉及一些初始的设置工作,但使用SQLAlchemy可以提高开发速度,减少SQL注入的风险,并提供数据库后端之间的某种程度的透明性。