作为通过 sqlite 结果的步骤将文本数据多次插入文本小部件的正确方法?

Proper method of performing multiple inserts of textual data into text widget as step through sqlite results?

我正在尝试从 SQLite 中提取多行文本数据并向其添加标签以显示在 Tk 文本小部件中。

如果我在浏览器中做类似的事情,我会在文档片段中构建元素,然后将片段添加到 DOM,而不是多次写入 DOM . Tk 中是否有等效的方法;或者在 Tcl 中的数据库结果循环中重复执行插入是否有效,相当于 C API 中的 sqlite3_step?

例如(查询返回的此类行可能多达数百行)

db1 eval {SELECT * FROM table ...} {
    .widget insert end $column_1 "tag_1 tag_x"
    .widget insert end $column_2 "tag_2 tag_y"
    .widget insert end $column_3\n "tag_3 tag_x"
}

或者,是否应该尝试在 SQL 中使用类似 GROUP_CONCAT 的东西来构建单个语句以在 Tcl 中求值?

谢谢。

下面是一个更具体的例子。一节经文的数据由数据库中的多行组成;而且,大多数情况下,会一次提取许多经文。我需要标记 strongs_no 列,以便将其设置为上标样式。

如果我只是 select 行,那么会有很多插入;但是,如果我在 SQL 中使用 group_concat,那么我不知道如何添加标签。 如果可能的话,返回的每一节经文仍然会有一个插入。

book_no  chapter_no  verse_no  index_no  strongs_no  kjv_text        
-------  ----------  --------  --------  ----------  ----------------
1        1           1         1         H7225       In the beginning
1        1           1         2         H430        God             
1        1           1         3         H1254       created         
1        1           1         4         H853                        
1        1           1         5         H8064       the heaven      
1        1           1         6         H853        and             
1        1           1         7         H776        the earth.     

 
select group_concat( kjv_text || strongs_no, ' ') as kjv
from blb_kjv_text
where book_no=1
  and chapter_no=1
  and verse_no=1


kjv                                                                                   
---------------------------------------------------------------------
In the beginningH7225 GodH430 createdH1254 H853 the heavenH8064 andH853 the earth.H776

如果您想对文本的每个跨度应用不同的标签,使用多次 insert 调用可能是最简单的方法。单独来看,它们并不是很昂贵(测量和渲染是昂贵的部分,但它们会被推迟到应用程序空闲时,因此您在大多数应用程序中看不到真正的成本)。如果您不在最后插入,请设置您自己的自定义标记(默认向右重力)并在此处进行插入;它的惊喜最少。

我真的不会在 SQL 中执行 GROUP_CONCAT 除非有其他一些与查询相关的原因,因为 Tcl 非常擅长文本操作。