在Python中以qmark格式传递时,从sqllite数据库中选择特定列将返回列名

2024-07-05 14:44:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试从下面的sqllite表中选择一个随机单元格

  consonants   a    b   c
0          d  ad   bd  cd
1          e  ae  NaN  ce
2          f  af   bf  cf

首先,我从['a','b','c']生成一个随机列c,从['d','e','f']生成一个随机行r。到目前为止这是可行的。你知道吗

但是,下面的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'

我真的不明白为什么它总是返回值c时,传递它的qmark符号。你知道吗


Tags: fromexecuteifconnwhereselectadcf