如何在trac环境中获取票据列表的最大ID?

1 投票
2 回答
513 浏览
提问于 2025-04-16 12:27

我正在为trac开发一个小工具脚本,这个脚本需要知道每个环境中最大的票据ID是什么。

目前(使用trac 0.11版本),我直接通过sqlite API从trac数据库中提取这个信息,但因为我们有多个环境,使用不同的数据库系统,所以这个原本简单的小工具脚本变得越来越复杂,做了一些没必要的事情。

在trac.*这个命名空间中,有没有什么方法可以让我找到一个开放环境中最大的票据ID呢?

如果能给我一个包含所有票据的数组,或者一个可以遍历所有票据的生成器,那就能解决我的问题。

我不能使用查询包,因为这是一个自动化的命令行脚本。

2 个回答

1

一种可能的方法是通过 XmlRpcPlugin 来查询 Trac,查询的内容是关于工单的,格式如下:

"order=id&desc&max=1"

显然,这种方法不依赖于具体的数据库,但如果你不能或者不想在你的 Trac 环境中安装额外的插件,那就不适用。

2

为什么你需要为数据库连接写自定义代码呢?因为有一些Trac对象可以帮助你获取数据库连接,这些对象可以让你不用直接接触到实际的数据库后台。

你可以查看一下 Trac数据库API。在0.11版本中,你应该使用 Environment.get_db_cnx() 来获取数据库连接,然后用 .cursor() 方法得到一个 Cursor 对象,接着就可以执行你的查询了。

撰写回答