首页 > 数据库 >sqlalchemy之append

sqlalchemy之append

时间:2023-09-26 17:24:38浏览次数:43  
标签:__ sqlalchemy Column user True append User

在 SQLAlchemy 中,append 方法通常用于将一个对象添加到关系属性中,特别是在多对多(Many-to-Many)或一对多(One-to-Many)关系中。这个方法的用途是向关系属性添加一个新的关联对象,以建立关系。

在多对多关系中,通常有一个中间表来表示两个模型之间的关系。append 方法用于将一个对象添加到这个中间表中,从而将两个模型关联起来。下面是一些示例代码,演示了在 SQLAlchemy 中如何使用 append 方法。

假设有两个模型:User 和 Role,它们之间是多对多关系,通过中间表 user_role 进行关联。

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

Base = declarative_base()

class User(Base):
    __tablename__ = 'users'
    
    id = Column(Integer, primary_key=True)
    username = Column(String, unique=True, nullable=False)
    
    roles = relationship('Role', secondary='user_role', back_populates='users')

class Role(Base):
    __tablename__ = 'roles'
    
    id = Column(Integer, primary_key=True)
    name = Column(String, unique=True, nullable=False)
    
    users = relationship('User', secondary='user_role', back_populates='roles')

class UserRole(Base):
    __tablename__ = 'user_role'
    
    user_id = Column(Integer, ForeignKey('users.id'), primary_key=True)
    role_id = Column(Integer, ForeignKey('roles.id'), primary_key=True)

# 创建数据库连接
engine = create_engine('sqlite:///example.db')
Base.metadata.create_all(engine)

# 创建会话
Session = sessionmaker(bind=engine)
session = Session()

# 创建用户和角色对象
user1 = User(username='user1')
user2 = User(username='user2')
role1 = Role(name='role1')
role2 = Role(name='role2')

# 将用户添加到角色
role1.users.append(user1)
role2.users.append(user2)

# 提交更改
session.add_all([user1, user2, role1, role2])
session.commit()

# 查询用户的角色
user = session.query(User).filter_by(username='user1').first()
print(user.roles)  # 输出: [<Role(name='role1')>]

在上述示例中,我们使用了 append 方法将用户对象添加到相应的角色对象中,建立了多对多关系。请注意,具体的用法可能会根据你的数据模型和需求有所不同,但 append 方法通常用于建立多对多或一对多关系。

标签:__,sqlalchemy,Column,user,True,append,User
From: https://www.cnblogs.com/yuezongke/p/17730693.html

相关文章

  • import引用自定义包、模块sys.path.append() ---转
    https://blog.csdn.net/Frank_LJiang/article/details/122656604import引用自定义包、模块)sys.path.append(问题sys.path.append()os.path.dirname(__file__)问题当引用不同文件下的自定义包时,容易出现以下问题ModuleNotFoundError:Nomodulenamed'ge'由于importxxx时,默认情......
  • sqlalchemy 排序方式 flask
    第一种:直接在查询语句中使用order_by现在就用第一种方法实现刚才所说(最新注册的用户的拍在前面),最新注册的也就是时间最大的。代码如下results=session.query(User).order_by(User.create_time.desc()).all()print(results)运行结果如下。 嗯,结果如我们所愿(时间按从大到小......
  • SQLAlchemy模块
    1、执行原生SQLfromsqlalchemyimportcreate_engine,text#创建engine对象engine=create_engine("sqlite:///demo.db",echo=False)withengine.connect()ascon:#先删除persons表con.execute(text('droptableifexistspersons'))#创建一......
  • sqlalchemy使用简单教程
    一、基本使用importtimeimportthreadingimportsqlalchemyfromsqlalchemyimportcreate_enginefromsqlalchemy.engine.baseimportEngine#第一步生成一个engine对象engine=create_engine("mysql+pymysql://root:[email protected]:3306/flask?charset=utf8",......
  • 【13.0】sqlalchemy 集成到Flask框架
    【在Flask中集成SQLAlchemy】在Flask中集成SQLAlchemy可以通过使用第三方扩展包flask-sqlalchemy来实现,以下是详细的步骤和说明:首先,需要导入SQLAlchemy类以及flask_sqlalchemy模块:fromflask_sqlalchemyimportSQLAlchemy实例化SQLAlchemy对象:db=SQLAlchemy()这个......
  • python sqlalchemy 框架
     1. SQLAlchemy简介SQLAlchemy是一个PythonSQL工具包和对象关系映射器,它为应用程序开发人员提供了SQL的全部功能和灵活性。它提供了一整套广为人知的企业级持久性模式,旨在实现高效和高性能的数据库访问,并将其转化为简单且Pythonic的领域语言。以下是SQLAlchemy的一些主要特......
  • SQLalchemy补充
    目录七更多查询方式八连表查询九原生sql(django-orm如何执行原生sql)9.1sqlalchemy执行原生sql9.2django执行原生sql十flask-sqlalchemy使用10.1sqlalchemy自己操作src/init.pysrc/models.pysrc/session_sql.pysrc/settings.pysrc/views.pymanage.py10.2使用flask-sqlalch......
  • SQLAlchemy
    目录一SQLAlchemy介绍和快速使用1.1sqlalchemy的原生操作二sqlalchemy通过orm创建表删除表sqlalchemy.pymodels.py示例三scoped_session线程安全3.1scoped_session线程对象3.2类装饰器四基本增删查改4.1基本增删查改五表关系:一对多(一对一)5.1表模型5.2新增和基于对象......
  • python3 安装clickhouse_sqlalchemy(greenlet) 失败
    环境信息:centos7操作系统,python3.8执行pip3installclickhouse_sqlalchemy或者pip3installgreenlet报以下报错:Command"/opt/python3.6.10-customized/bin/python3.6-u-c"importsetuptools,tokenize;file='/tmp/pip-install-wbyi43ip/greenlet/setup.py';f=g......
  • cannot import name '_BindParamClause' from 'sqlalchemy.sql.expression'
    python3.8安装环境组件正常安装运行 flaskdbinit报错 cannotimportname'_BindParamClause'from'sqlalchemy.sql.expression' 问题原因-未知 解决方案更新alembic组件版本pipinstall--upgradealembic 问题解决 ......