回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我试图创建一个简单的函数来呈现包含(dest_column,src_expression)对的dict。在</p>
<p>特别是,我希望界面类似于:</p>
<pre><code>insert_into(table_obj_a, tbl_object_b, dict(
col_c = 'col_f',
col_a = 'col_g',
col_q = 'col_r + 5',
col_r = tbl_object_b.col_q,
col_m = 'rand()',
))
</code></pre>
<p>在尝试实现这一点时,我注意到.from_select功能有一些特殊的行为,即传递给from_select的列的顺序似乎被忽略了。在</p>
<p>这就是我所经历的:</p>
<h2>在虫子.py在</h2>
^{pr2}$
<h2>输出</h2>
<pre><code>u@host:~/src/sa_bug$ python bug.py
['aaaa', 'aardvark', 'bbbb', 'dddd', 'eeee', 'ffff']
['aaaa', 'aardvark', 'bbbb', 'dddd', 'eeee', 'ffff']
SELECT aaaa, aardvark, bbbb, dddd, eeee, ffff
FROM table_b
INSERT INTO table_a (aaaa, bbbb, dddd, eeee, ffff, aardvark) SELECT aaaa, aardvark, bbbb, dddd, eeee, ffff
FROM table_b
</code></pre>
<h2>期望</h2>
<pre><code>u@host:~/src/sa_bug$ python bug.py
['aaaa', 'aardvark', 'bbbb', 'dddd', 'eeee', 'ffff']
['aaaa', 'aardvark', 'bbbb', 'dddd', 'eeee', 'ffff']
SELECT aaaa, aardvark, bbbb, dddd, eeee, ffff
FROM table_b
INSERT INTO table_a (aaaa, aardvark, bbbb, dddd, eeee, ffff) SELECT aaaa, aardvark, bbbb, dddd, eeee, ffff
FROM table_b
</code></pre>
<p>如您所见,INSERT INTO语句中列名的顺序与SELECT语句中表达式的顺序不匹配。在</p>
<p>我是否误解了.from峎select()的预期用途?在</p>