execu中的Python sqlite3字符串变量

2024-04-26 18:03:57 发布

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

我尝试用Python执行这个sqlite3查询。我将代码缩减到最小,sqlite.connect等可以工作。

column = 'Pron_1_Pers_Sg'
goal = 'gender' 
constrain = 'Mann'


with con:
    cur = con.cursor()

    cur.execute("SELECT ? FROM Data where ?=?", (column, goal, constrain))
    con.commit()

    rows = cur.fetchall()

    for element in rows:
        values.append(element)

这将返回一个空列表。 如果我硬编码字符串,它就会工作并返回值。


Tags: 代码sqliteconnectcolumnelementsggendercon
3条回答

参数标记只能用于表达式,即值。 不能将它们用于表名和列名等标识符。

使用这个:

cur.execute("SELECT "+column+" FROM Data where "+goal+"=?", (constrain,))

或者这个:

cur.execute("SELECT %s FROM Data where %s=?" % (column, goal), (constrain,))

(在实际访问完数据之前不要提交。)

试试这个:c.execute("SELECT {idf} FROM Data WHERE {goal}".\ format(idf=column, goal=constrain))

我今天也遇到了类似的问题。我不确定,如果这能解决你的问题:

cur.execute("SELECT ? FROM Data where ?=?", (column, goal, constrain,))

重要的是最后一个

试一试,这是我的代码的问题-所以也许它对你也有帮助。很抱歉,我无法真正解释原因,因为我只是在学习自己,并且对python/sqlite已经有几个星期了。

相关问题 更多 >