python3 orm

颜贵龙 3周前 8浏览 0评论

Python3 ORM 全称是Python Object Relational Mapping,是一个Python开发机制,可以将数据模型转换为对象模型,从而简化数据库操作。ORM可以将关系型数据库中的数据与Python对象之间建立映射关系,这样就可以通过Python对象的方式来操作数据库,使得Python的操作更加直观、简单。

Python3 ORM 的一个优势是它支持在Python代码中使用原生SQL语句,这意味着我们不必学习新的语法就可以轻松处理基本数据类型,例如INSERT、SELECT、UPDATE、DELETE等操作,同时也支持高级ORM操作,例如映射、查询、增删改查等。

# Python3 ORM例子

from sqlalchemy import create_engine, Column, Integer, String, ForeignKey
from sqlalchemy.orm import sessionmaker, relationship
from sqlalchemy.ext.declarative import declarative_base

engine = create_engine('sqlite:///database.db')
Base = declarative_base()

class User(Base):
    __tablename__ = 'users'
    id = Column(Integer, primary_key=True)
    name = Column(String, nullable=False)
    email = Column(String, unique=True)
    posts = relationship("Post", back_populates="author")

class Post(Base):
    __tablename__ = 'posts'
    id = Column(Integer, primary_key=True)
    title = Column(String, nullable=False)
    body = Column(String, nullable=False)
    author_id = Column(Integer, ForeignKey('users.id'))
    author = relationship("User", back_populates="posts")

Session = sessionmaker(bind=engine)
session = Session()

# 创建表
Base.metadata.create_all(engine)

# 插入用户
user = User(name='test', email='test@test.com')
session.add(user)
session.commit()

# 查询用户
user = session.query(User).filter(User.email == 'test@test.com').first()
print(user.name)

# 插入文章
post = Post(title='test-title', body='test-body', author_id=user.id)
session.add(post)
session.commit()

# 查询文章
post = session.query(Post).filter(Post.author_id == user.id).first()
print(post.title)

在上面的例子中,我们使用了Python3 ORM框架SQLAlchemy,创建了一个SQLite数据库,建立了用户和文章两个表格,其中通过ForeignKey建立了表格之间的关系。

然后,我们通过SQLAlchemy设置了用户和文章两个表格的Python对象模型,并使用session连接数据库,进行数据的CRUD操作。

Python3的ORM使我们的代码更易于维护和理解,自然写出更优雅的Python代码!