将TracQuery转换为Trac SQL语句或者将Trac SQL语句转换为TracQuery是否可能?

3

我创建了一些Trac报告,但是尝试使用SQL来制作它们时,得到的结果与我预期的不同。这是我的SQL查询:

SELECT      p.value AS __color__,
            reporter AS __group__,
            id AS ticket, summary, resolution , component, 
            t.type AS type, priority, severity, time AS created,
            changetime AS modified,
            changetime AS __changetime, description AS _description,
            reporter AS _reporter
FROM        ticket t
LEFT JOIN   enum p ON p.name = t.priority AND p.type = 'priority'
WHERE       t.status = 'closed'
ORDER BY    changetime DESC, CAST(p.value AS integer), milestone, t.type, time

使用这个查询,按报告人分组并没有起作用。我得到了几行每个报告人的结果。所以我尝试使用“自定义查询”功能来获得结果。使用以下TracQuery产生了我期望的结果:
query:?status=closed
&group=reporter
&col=id
&col=summary
&col=resolution
&col=component
&col=type
&col=priority
&col=severity
&col=time
&col=changetime
&order=changetime
&desc=1

我的问题是:我能否将TracQuery转换为SQL语句,或者能否查看后端执行的SQL语句?我之所以问这个问题,是因为我想要能够转换一些列或使用其他SQL函数。

2个回答

4

将日志级别设置为DEBUG,并在您的trac.ini中设置配置选项[trac] debug_sql = true。这将记录数据库上执行的所有SQL语句,包括与您的查询对应的语句。最困难的部分是在日志中找到正确的语句。

哦,当您完成后,请再次禁用该选项,因为所有这些日志记录会显著减慢Trac的速度。


1
Trac源代码在内部将查询转换为SQL,因此您应该能够编辑源代码,在将查询提交到数据库之前将查询字符串打印到日志文件中(我手边没有源代码,无法立即告诉您确切的代码位置)。当您直接输入SQL时可能不会得到完全相同的结果,我记不清Trac是否对TracQuery的SQL查询结果进行任何额外的后处理。

调整Trac日志记录设置为“DEBUG”也可能有所帮助,看看执行这两个查询时日志中是否有任何有用的输出。


谢谢你的建议。很可惜我不是Python开发者,所以不想自己修改代码。但我会尝试调试模式,并报告是否得到结果。 - 2ndkauboy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接