如何使用 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
,\n
ARRIV`' 在第 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()
对字段使用 a
和 b
。
例如,如果 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
我正在尝试使用左连接来连接 2 个表,但有些地方不太对劲。
我收到此错误代码:"You have an error in your SQL syntax to use near 'EXAMINED_AIRPORT_AIRPORT
',\n
EXAMINED_AIRPORT_COUNTRY
,\n
ARRIV`' 在第 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()
对字段使用 a
和 b
。
例如,如果 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