【问题标题】:SQLAlchemy multiple AND expression creates multiple selects on same entrySQLAlchemy 多个 AND 表达式在同一条目上创建多个选择
【发布时间】:2016-03-08 16:40:39
【问题描述】:

我正在尝试根据如下表达式过滤我的查询:

self.query = self.query.filter(expression)

但是当我过滤它时,查询添加了两次 select 语句,这在 MYSQL 中会导致 OperationalError: 1060 "Duplicate column name 'xxxx'。这是我的 SQLAlchemy 表达式:

'"var__490__07McUdXtiy".response IS NOT NULL AND "var__490__07McUdXtiy".response != :param_1 AND "var__490__07McUdXtiy".response = :param_2'

只有当我在表达式中有多个 AND 时才会发生这种情况。为了更清楚地看到重复的选择,我已经拆分了字符串。在下面的结果中是 var__490__07McUdXtiy:

['SELECT auth_user.id AS auth_user_id',
 ' auth_user.password AS auth_user_password',
 ' auth_user.last_login AS auth_user_last_login',
 ' auth_user.is_superuser AS auth_user_is_superuser',
 ' auth_user.username AS auth_user_username',
 ' auth_user.first_name AS auth_user_first_name',
 ' auth_user.last_name AS auth_user_last_name',
 ' auth_user.email AS auth_user_email',
 ' auth_user.is_staff AS auth_user_is_staff',
 ' auth_user.is_active AS auth_user_is_active',
 ' auth_user.date_joined AS auth_user_date_joined',
 ' `var__490__07McUdXtiy`.response AS `07McUdXtiy_short`',
 ' `var__490__07McUdXtiy`.response AS `07McUdXtiy_short` \nFROM auth_user INNER JOIN reviewroom_reviewroomgroup_members ON reviewroom_reviewroomgroup_members.user_id = auth_user.id AND reviewroom_reviewroomgroup_members.reviewroomgroup_id IN (%s',
 ' %s) LEFT OUTER JOIN surveys_responsegroup AS survey__490 ON survey__490.user_id = auth_user.id AND survey__490.deleted = %s AND survey__490.survey_id = %s LEFT OUTER JOIN surveys_response AS `var__490__07McUdXtiy` ON `var__490__07McUdXtiy`.group_id = survey__490.id AND `var__490__07McUdXtiy`.question = %s \nWHERE `var__490__07McUdXtiy`.response IS NOT NULL AND `var__490__07McUdXtiy`.response != %s AND `var__490__07McUdXtiy`.response = %s']

任何帮助将不胜感激,谢谢!

【问题讨论】:

    标签: python mysql sqlalchemy


    【解决方案1】:

    我想通了。 BinaryExpression 实际上有两个表达式子句,因此第二个子句创建了另一个选择。

    【讨论】:

      猜你喜欢
      • 2011-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-23
      • 1970-01-01
      • 2012-11-24
      相关资源
      最近更新 更多