📅  最后修改于: 2023-12-03 15:20:17.908000             🧑  作者: Mango
SQLAlchemy
是一款Python库,可用于操作关系型数据库。它提供了两种使用方式:Core和ORM。ORM(对象关系映射)是一种编程技巧,将数据库表映射到类上,使开发者可以使用面向对象方式而不是关系型数据库的方式来操作数据。在ORM中,“声明映射”是最常用的模式。
声明映射是将一个Python类映射到一个数据库表的过程。这个类通常被称为模型。模型定义了表的结构,包括列和约束(如主键和外键)。
语法:
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
在这个例子中,我们创建了一个基础模型,Base
。使用这个模型,在下一步中定义模型类。
要定义一个模型,必须创建一个类,该类继承自Base
。类的名称应该是单数形式,并且应该反映表的名称。例如,如果表名是users
,那么类应该被称为User
。
from sqlalchemy import Column, Integer, String
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String)
age = Column(Integer)
在这个例子中,我们创建了一个名为User
的类,并将其映射到名为users
的表。表有三个列:id
,name
和age
。id
是主键,name
是字符串类型,age
是整数类型。
当定义好模型后,就可以使用ORM的API来操作数据。以下是一些基本操作的示例代码:
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
engine = create_engine('postgresql://localhost/mydatabase')
Session = sessionmaker(bind=engine)
# 添加数据
session = Session()
user = User(name='John', age=25)
session.add(user)
session.commit()
# 查询数据
users = session.query(User).all()
for user in users:
print(user.name)
# 更新数据
user = session.query(User).filter_by(name='John').first()
user.age = 26
session.commit()
# 删除数据
user = session.query(User).filter_by(name='John').first()
session.delete(user)
session.commit()
在这个例子中,我们首先创建了一个engine
对象,用于连接到数据库。然后我们创建了一个Session
类,它是一个工厂函数,可用于创建数据库会话。我们通过创建一个新的Session
对象来获取一个新的数据库会话。
接着,我们添加了一条新数据到数据库,并提交了我们的更改。我们使用查询语句获取了所有的User
对象,并将它们全部打印出来。
然后,我们通过查询来获取一个用户,并更新了他的年龄。最后,我们又通过查询来获取一个用户,并将他从数据库中删除。
ORM使得开发人员可以使用面向对象的方式操作关系型数据库。声明映射是使用ORM的最常用模式之一。定义模型是将一个Python类映射到一个数据库表的过程。我们使用了基础模型Base
,然后创建了一个User
模型并将其映射到一个数据库表。最后,我们使用ORM的API来对模型进行操作。