ORM是什么?

ORM(Object-Relational Mapping,对象关系映射)是一种程序设计技术,用于实现面向对象编程语言里的对象和关系数据库中的数据之间的映射。它的主要功能是在面向对象编程和关系数据库的概念结构之间提供了一座桥梁。

在面向对象编程中,数据是通过对象和它们之间的关系来处理的。每一个对象都可以看作是一个数据实体,它有一些属性(数据元素)以及一些操作这些属性的方法。

然而,关系数据库则使用表格和行的集合来存储和操作数据。在关系数据库中,数据实体被存储为表格,数据元素被存储为表格的列,而实体的实例(即具体的数据对象)被存储为表格的行。

ORM技术旨在解决这两种数据表示之间的不匹配。使用ORM,你可以在代码中操作对象,然后由ORM层将这些操作转换为对数据库的SQL查询。这样,你就不需要直接写SQL查询,可以专注于你的面向对象设计和业务逻辑。

在Python中,有很多库提供了ORM功能,例如SQLAlchemy,Django ORM,Peewee等。

举个例子

下面我将使用Python的SQLAlchemy库为你演示ORM的基本用法。首先,我们需要定义一个映射到数据库表的类:

from sqlalchemy import Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()

class User(Base):
    __tablename__ = 'users'

    id = Column(Integer, primary_key=True)
    name = Column(String)
    email = Column(String)

在上面的代码中,User类映射到名为users的数据库表。idnameemail属性分别映射到表的三列。

接下来,我们可以创建一个用户实例,并将其添加到数据库:

from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker

engine = create_engine('sqlite:///example.db')
Session = sessionmaker(bind=engine)

# Create a new session
session = Session()

# Create a new user
new_user = User(name='John', email='[email protected]')

# Add the user to the session
session.add(new_user)

# Commit the transaction
session.commit()

在这个例子中,我们首先创建一个连接到SQLite数据库的engine。然后我们创建一个Session类,这个类会为我们处理所有的数据库交互。我们使用这个Session类创建一个新的会话,并使用它来添加和提交一个新的用户。

我们也可以用类似的方式从数据库查询用户:

# Query the user
user = session.query(User).filter_by(name='John').first()

print(user.id)
print(user.name)
print(user.email)

在这个查询中,我们从User表中筛选出名字为’John’的第一个用户。然后我们打印出该用户的id、name和email。

这就是ORM的基本用法:你可以在代码中操作对象,而ORM将这些操作转换为SQL查询。这样,你就不需要直接写SQL查询,可以专注于你的业务逻辑。

你可能感兴趣的:(python初级,django,python,后端)