如何使用 MYSQLdb 在 Python 2.7 中正确创建左连接?

How to create a left-join correctly in Python 2.7 with MYSQLdb?

我正在尝试使用左连接来连接 2 个表,但有些地方不太对劲。

我收到此错误代码:"You have an error in your SQL syntax to use near 'EXAMINED_AIRPORT_AIRPORT',\n EXAMINED_AIRPORT_COUNTRY\nARRIV`' 在第 23 行

这是我的代码:

connection = MySQLdb.connect(host='localhost',
        user='adam',
        passwd='',
        db='database1',
        use_unicode=True,
        charset="utf8")
    cursor = connection.cursor()
    query = """     select 
      `ACTUAL_TIME`, 
      `ACTUAL_DAY`, 
      `EXAMINED_AIRPORT_CODE`, 
      `EXAMINED_AIRPORT_AIRPORT`,     
      `EXAMINED_AIRPORT_COUNTRY`, 
      `ARRIVALS/DEPARTURES`, 
      `SCHEDULED_TIME`, 
      `FLIGHT`, 
      `FROM`, 
      `AIRLANE`,
      `AIRCRAFT`, 
      `STATUS`, 
      `FLIGHT_ID_1`, 
      `FLIGHT_ID_2`, 
      `UPLOAD_TIME`
    from OSSZES as a
    left join (
      select 
        `ACTUAL_TIME`
        `ACTUAL_DAY`,
        COALESCE(`EXAMINED_AIRPORT_CODE`, '') as EXAMINED_AIRPORT_CODE 
        `EXAMINED_AIRPORT_AIRPORT`, 
        `EXAMINED_AIRPORT_COUNTRY`, 
        `ARRIVALS/DEPARTURES`, 
        `SCHEDULED_TIME`, 
        `FLIGHT`, 
        `FROM`, 
        `AIRLANE`,
        `AIRCRAFT`, 
        `STATUS`, 
        `FLIGHT_ID_1`, 
        `FLIGHT_ID_2`, 
        `UPLOAD_TIME`
      from OSSZES_CLEAR
    ) as b using (`ACTUAL_DAY`,`EXAMINED_AIRPORT_CODE`,`FLIGHT`,`SCHEDULED_TIME`,`STATUS`)
    where b.EXAMINED_AIRPORT_CODE is null
    into outfile '/tmp/proba.csv'
    fields terminated by ';'
    enclosed by '"'
    lines terminated by '\n';
        """
    cursor.execute(query)
    connection.commit()
    cursor.close()

对字段使用 ab。 例如,如果 ACTUAL_TIME 来自 table a( OSSZES),则使用 a.ACTUAL_TIME b table.

也是如此
select 
  `a`.`ACTUAL_TIME`, 
  `a`.`ACTUAL_DAY`, 
  `a`.`EXAMINED_AIRPORT_CODE`, 
  `a`.`EXAMINED_AIRPORT_AIRPORT`,     
  `a`.`EXAMINED_AIRPORT_COUNTRY`, 
  `a`.`ARRIVALS/DEPARTURES`, 
  `a`.`SCHEDULED_TIME`, 
  `a`.`FLIGHT`, 
  `a`.`FROM`, 
  `a`.`AIRLANE`,
  `a`.`AIRCRAFT`, 
  `a`.`STATUS`, 
  `a`.`FLIGHT_ID_1`, 
  `a`.`FLIGHT_ID_2`, 
  `a`.`UPLOAD_TIME`
from OSSZES as a
left join (
  select 
    `ACTUAL_TIME`
    `ACTUAL_DAY`,
    COALESCE(`EXAMINED_AIRPORT_CODE`, '') as EXAMINED_AIRPORT_CODE 
    `EXAMINED_AIRPORT_AIRPORT`, 
    `EXAMINED_AIRPORT_COUNTRY`, 
    `ARRIVALS/DEPARTURES`, 
    `SCHEDULED_TIME`, 
    `FLIGHT`, 
    `FROM`, 
    `AIRLANE`,
    `AIRCRAFT`, 
    `STATUS`, 
    `FLIGHT_ID_1`, 
    `FLIGHT_ID_2`, 
    `UPLOAD_TIME`
  from OSSZES_CLEAR
) as b using (`ACTUAL_DAY`,`EXAMINED_AIRPORT_CODE`,`FLIGHT`,`SCHEDULED_TIME`,`STATUS`)
where `b`.`EXAMINED_AIRPORT_CODE` is null