Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 组_concat函数中的未知列错误_Python_Mysql_Sqlalchemy - Fatal编程技术网

Python 组_concat函数中的未知列错误

Python 组_concat函数中的未知列错误,python,mysql,sqlalchemy,Python,Mysql,Sqlalchemy,我正在编写一个事件仪表板,并正在连接表以建立层次关系,以便获得最新的事件。除了下面的group_concat函数外,我可以从数据库中获取查询。(我包括AutoEscalationDB类以供参考,因为这是该类中所有函数访问现有数据库的方式。该类中的其他代码已编辑,但与此问题无关。) 当我点击URL时,出现以下错误: OperationalError: (_mysql_exceptions.OperationalError) (1054, "Unknown column 'e2.event_id'

我正在编写一个事件仪表板,并正在连接表以建立层次关系,以便获得最新的事件。除了下面的group_concat函数外,我可以从数据库中获取查询。(我包括AutoEscalationDB类以供参考,因为这是该类中所有函数访问现有数据库的方式。该类中的其他代码已编辑,但与此问题无关。)

当我点击URL时,出现以下错误:

OperationalError: (_mysql_exceptions.OperationalError) (1054, "Unknown
column 'e2.event_id' in 'field list'") [SQL: u"SELECT
anon_1.events_1_parent_event_id AS anon_1_events_1_parent_event_id,
anon_1.events_1_event_id AS anon_1_events_1_event_id,
event_statuses_1.event_status AS event_statuses_1_event_status,
anon_1.events_1_event_name AS anon_1_events_1_event_name,
GROUP_CONCAT(e2.event_id ORDER BY e2.event_id SEPARATOR ','),
anon_1.events_1_reporter AS anon_1_events_1_reporter, 
anon_1.events_1_message AS anon_1_events_1_message, users.user_id AS 
users_user_id, users.username AS users_username, users.first_name AS  
users_first_name, users.last_name AS users_last_name, 
anon_1.events_1_timestamp AS anon_1_events_1_timestamp \nFROM (SELECT 
events_1.event_id AS events_1_event_id, events_1.event_type_id AS 
events_1_event_type_id, events_1.reporter AS events_1_reporter, 
events_1.parent_event_id AS events_1_parent_event_id, 
events_1.property_id AS events_1_property_id, events_1.event_name AS 
events_1_event_name, events_1.event_status_id AS 
events_1_event_status_id, events_1.escalation_type_id AS 
events_1_escalation_type_id, events_1.timestamp AS events_1_timestamp, 
events_1.user_id AS events_1_user_id, events_1.message AS 
events_1_message, events_1.group_id AS events_1_group_id, 
events_1.shift_id AS events_1_shift_id \nFROM events AS events_1) AS 
anon_1 LEFT OUTER JOIN events AS events_2 ON events_2.parent_event_id =
anon_1.events_1_event_id INNER JOIN event_statuses AS event_statuses_1 ON 
event_statuses_1.event_statuses_id = anon_1.events_1_event_status_id LEFT 
OUTER JOIN event_statuses AS event_statuses_2 ON events_2.event_status_id
= event_statuses_2.event_statuses_id LEFT OUTER JOIN users ON 
users.user_id = anon_1.events_1_user_id"]
如果我注释掉eid.string,它将按原样返回查询:

SELECT anon_1.events_1_parent_event_id AS
anon_1_events_1_parent_event_id, anon_1.events_1_event_id AS 
anon_1_events_1_event_id, event_statuses_1.event_status AS 
event_statuses_1_event_status, anon_1.events_1_event_name AS 
anon_1_events_1_event_name, anon_1.events_1_reporter AS 
anon_1_events_1_reporter, anon_1.events_1_message AS 
anon_1_events_1_message, users.user_id AS users_user_id, users.username 
AS users_username, users.first_name AS users_first_name, users.last_name 
AS users_last_name, anon_1.events_1_timestamp AS 
anon_1_events_1_timestamp 
FROM (SELECT events_1.event_id AS events_1_event_id, 
events_1.event_type_id AS events_1_event_type_id, events_1.reporter AS 
events_1_reporter, events_1.parent_event_id AS events_1_parent_event_id,
events_1.property_id AS events_1_property_id, events_1.event_name AS 
events_1_event_name, events_1.event_status_id AS 
events_1_event_status_id, events_1.escalation_type_id AS 
events_1_escalation_type_id, events_1.timestamp AS events_1_timestamp, 
events_1.user_id AS events_1_user_id, events_1.message AS 
events_1_message, events_1.group_id AS events_1_group_id, 
events_1.shift_id AS events_1_shift_id 
FROM events AS events_1) AS anon_1 LEFT OUTER JOIN events AS events_2 ON 
events_2.parent_event_id = anon_1.events_1_event_id JOIN event_statuses
AS event_statuses_1 ON event_statuses_1.event_statuses_id = 
anon_1.events_1_event_status_id LEFT OUTER JOIN event_statuses AS
event_statuses_2 ON events_2.event_status_id =
event_statuses_2.event_statuses_id LEFT OUTER JOIN users ON users.user_id = anon_1.events_1_user_id
如果我插入一个“print eid”语句,它会返回这个,应该是正确的:

GROUP_CONCAT(e2.event_id ORDER BY e2.event_id SEPARATOR ',')
我尝试复制的SQL查询如下:

SELECT
e1.parent_event_id,
e1.event_id,
es1.event_status,
e1.event_name,
GROUP_CONCAT(e2.event_id ORDER BY e2.event_id SEPARATOR ', ') AS child_events,
e1.reporter,
e1.message,
u1.user_id,
u1.username,
u1.first_name,
u1.last_name,
e1.timestamp
FROM events e1
LEFT JOIN events e2 ON (e2.parent_event_id = e1.event_id)
JOIN event_statuses es1 ON (es1.event_statuses_id = e1.event_status_id)
LEFT JOIN event_statuses es2 ON (es2.event_statuses_id = e2.event_status_id)
LEFT JOIN users u1 ON (u1.user_id = e1.user_id);
我已经确认查询本身是有效的

我怀疑group_concat声明的这一部分:

.compile(bind=create_engine('mysql://'))

正在创建新的mysql引擎,而不是绑定到现有数据库,因此无法从Events表中找到event_id列。不幸的是,这不是我的代码,我是sqlalchemy的新手,所以我有点像是在黑暗中拍摄的。任何建议都是非常受欢迎的,因为我已经为此努力了几天,我被卡住了。提前谢谢

你问过SQLAlchemy的IRC频道吗?我不确定您是否使用session.query(…).from_self(…)。可能有关联。您是否尝试通过“核心”API,即select([columns])。select_from(fromexpr)。where(where子句)来呈现查询?我确实在IRC频道中询问过,但那里非常安静。session.query语句从数据库中提取,而无需建立新连接。如果我执行一个简单的
text()
语句,我就能够从数据库中取出行,但我不想这样做,因为它当然不太灵活。您在SQLAlchemy的IRC频道中询问过吗?我不确定您是否使用session.query(…).from_self(…)。可能有关联。您是否尝试通过“核心”API,即select([columns])。select_from(fromexpr)。where(where子句)来呈现查询?我确实在IRC频道中询问过,但那里非常安静。session.query语句从数据库中提取,而无需建立新连接。如果我使用纯
text()
语句,我就能够从数据库中取出行,但我不想这样做,因为它当然不太灵活。
.compile(bind=create_engine('mysql://'))