美文网首页
使用sqlalchemy

使用sqlalchemy

作者: 木火应 | 来源:发表于2023-03-07 15:34 被阅读0次

SQLAlchemy是一个流行的Python ORM框架,可以将关系型数据库表现为Python类和对象,方便地进行数据库操作。以下是SQLAlchemy ORM常用的操作和知识点:

  1. 创建表格:使用declarative_base()函数创建一个基类,并定义表格的列和属性。例如:
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String

Base = declarative_base()

class User(Base):
    __tablename__ = 'users'
    id = Column(Integer, primary_key=True)
    name = Column(String)
    age = Column(Integer)
  1. 建立会话:使用Session类建立会话,并通过commit()方法提交更改。例如:
from sqlalchemy.orm import Session

session = Session()
user = User(name='Tom', age=25)
session.add(user)
session.commit()
  1. 查询数据:使用query()方法查询数据。例如:
user = session.query(User).filter_by(name='Tom').first()
  1. 修改数据:使用query()方法查询数据后,通过更改对象属性,再次使用commit()方法提交更改。例如:
user = session.query(User).filter_by(name='Tom').first()
user.age = 26
session.commit()
  1. 删除数据:使用delete()方法删除对象,并通过commit()方法提交更改。例如:
user = session.query(User).filter_by(name='Tom').first()
session.delete(user)
session.commit()
  1. 多表查询:使用join()方法将多个表连接,并使用filter()方法过滤条件。例如:
from sqlalchemy import join

query = session.query(User, Address).join(Address, User.id == Address.user_id).filter(User.name == 'Tom')
  1. 一对多关系:使用relationship()方法定义一对多关系。例如:
from sqlalchemy.orm import relationship

class User(Base):
    __tablename__ = 'users'
    id = Column(Integer, primary_key=True)
    name = Column(String)
    age = Column(Integer)
    addresses = relationship('Address', backref='user')

class Address(Base):
    __tablename__ = 'addresses'
    id = Column(Integer, primary_key=True)
    user_id = Column(Integer, ForeignKey('users.id'))
    email = Column(String)
  1. 在实际项目中,一对多关系通常用于表示一个主表记录对应多个从表记录的情况,例如一个用户可以有多个地址。
    下面是一个添加用户和地址的示例:
from sqlalchemy.orm import sessionmaker
from sqlalchemy import create_engine

# 创建数据库引擎和会话工厂
engine = create_engine('mysql+pymysql://username:password@localhost:3306/dbname?charset=utf8mb4')
Session = sessionmaker(bind=engine)

# 定义用户和地址类
class User(Base):
    __tablename__ = 'users'
    id = Column(Integer, primary_key=True)
    name = Column(String)
    age = Column(Integer)
    addresses = relationship('Address', backref='user')

class Address(Base):
    __tablename__ = 'addresses'
    id = Column(Integer, primary_key=True)
    user_id = Column(Integer, ForeignKey('users.id'))
    email = Column(String)

# 创建用户和地址记录
session = Session()
user = User(name='Tom', age=25)
address1 = Address(email='tom@example.com')
address2 = Address(email='tom@gmail.com')
user.addresses = [address1, address2]

# 提交更改
session.add(user)
session.commit()

相关文章

网友评论

      本文标题:使用sqlalchemy

      本文链接:https://www.haomeiwen.com/subject/qghbldtx.html