sqlalchemy - python中的子查询sqlalchemy
问题描述
PycharmProjects\pythonProject\programowanie_bazy_sda.py:1059:SAWarning:将子查询对象强制转换为 select() 以便在 IN() 中使用;请明确传递一个 select() 构造 session.query(Directors).filter(Directors.director_id.in_(subq)).update({'rating': (Directors.rating + 1)}, synchronize_session='fetch')
from sqlalchemy import and_, between, or_, join, select, ForeignKey, func, text from sqlalchemy.ext.declarative import declarative_base from sqlalchemy import create_engine, Column, String, Integer from sqlalchemy.orm import sessionmaker, relationship
con = create_engine('mysql://root:xxxxxx@localhost:3306/cinematic') base = declarative_base()
类董事(基础):
__tablename__ = 'directors'
director_id = Column(Integer, primary_key=True, autoincrement=True)
name = Column(String(30), nullable=False)
surname = Column(String(30), nullable=False)
rating = Column(Integer, nullable=False)
movies = relationship('Movies', back_populates='director')
类电影(基础): 表名='电影'
movie_id = Column(Integer, primary_key=True, autoincrement=True)
title = Column(String(30), nullable=False)
year = Column(Integer, nullable=False)
category = Column(String(30), nullable=False)
director_id = Column(Integer, ForeignKey('directors.director_id'), nullable=False)
rating = Column(Integer, nullable=False)
director = relationship('Directors', back_populates='movies')
会话 = sessionmaker(bind=con) 会话 = 会话()
subq = session.query(Movies.director_id).filter(and_(Movies.year < 2001, Movies.title.like('T%'))).subquery()
session.query(Directors).filter(Directors.director_id.in_(subq)).update({'rating': (Directors.rating + 1)}, synchronize_session='fetch')
解决方案
推荐阅读
- html - 在 HTML 表单中使用单个
- excel - 合并查询/扩展时如何避免 Power Query 重新排序我的数据
- scala - 理解scala中的多个参数组
- xml - EAP-TTLS 用户属性 xml 示例
- php - php readfile xml总是返回零大小
- sql - 如何选择一条记录并将其最新的相关记录包含在 SQL 查询中?
- c# - 如何使用母版页本身的 id 找到母版页列表控件并向其添加属性?
- c# - 防止用户输入的数据在新窗口加载时清除
- go - 使用哪些事件来代替 Google Chat 的“DeprecatedEvent”
- azure - 如何使用 log-to-eventhub 策略向事件中心发送带有请求和响应的单个事件