我尝试从以下sqllite表中选择一个随机单元格
consonants a b c
0 d ad bd cd
1 e ae NaN ce
2 f af bf cf
首先,我从c
生成随机列['a','b','c']
,从r
生成随机行['d','e','f']
。到目前为止这是有效的。
但是,以下select语句始终返回c
的值,而不是c
指定的列的值。
x = conn.execute('select ? from syllables WHERE consonants=?',(c,r)).fetchall()
# Returns [('b',)] if c='b' and r='f'
我通过选择所有列*
验证了WHERE子句是否正确。
x = conn.execute('select * from syllables WHERE consonants=?',(r)).fetchall()
# Returns [('f', 'af', 'bf', 'cf')] if r='f'
如果我手动检索特定列,例如c ='b'
,它也有效x = conn.execute('select b from syllables WHERE consonants=?',(r)).fetchall()
# Returns [('bf',)] if r='f'
我真的不明白为什么在用qmark表示法传递时总是返回c
的值。