我试着用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)
这将返回一个空列表。如果我硬编码字符串,它将工作并返回值。
4条答案
按热度按时间brccelvz1#
参数标记只能用于表达式(即值)。不能用于表名和列名等标识符。
使用此命令:
或者这个:
(And在实际访问完数据之前不要提交。)
d7v8vwbk2#
试试这个:
c.execute("SELECT {idf} FROM Data WHERE {goal}".\ format(idf=column, goal=constrain))
ws51t4hk3#
我决定把这个放在这里,以防有人觉得有帮助:
你可以使用Python 3的
f-strings
,如下所示:如果要传递给SQL查询的变量是数值(如整数),请使用此语法
cur.execute(f"SELECT * FROM table_name WHERE column_name={integer_variable}")
对于字符串,您可以编辑格式字符串,如下所示:
cur.execute(f"SELECT * FROM table_name WHERE column_name='{string_variable}'")
传递字符串变量时,请注意
''
。您还可以将
f-strings
用于多行字符串,例如:最后将
sql_query
传递到光标,如下所示:cur.execute(sql_query)
wr98u20j4#
我今天也遇到了类似的问题。我不确定这是否能解决你的问题:
重要的是最后一个**,**
给予一试,这是我的代码的问题-所以也许它对你也有帮助。抱歉,不能真正解释原因,因为我刚刚学习自己,并进入Python/SQLite几个星期。