J'essaie d'exécuter cette requête sqlite3 en Python. J'ai réduit le code au minimum, sqlite.connect, etc.
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)
Ceci retourne une liste vide. Si je code les chaînes, cela fonctionnera et retournera des valeurs.
Les marqueurs de paramètre ne peuvent être utilisés que pour les expressions, c'est-à-dire les valeurs. Vous ne pouvez pas les utiliser pour des identificateurs tels que les noms de table et de colonne.
Utilisez ceci:
cur.execute("SELECT "+column+" FROM Data where "+goal+"=?", (constrain,))
ou ca:
cur.execute("SELECT %s FROM Data where %s=?" % (column, goal), (constrain,))
(Et ne commettez pas avant d'avoir fini d'accéder aux données.)
Essayez ceci: c.execute("SELECT {idf} FROM Data WHERE {goal}".\
format(idf=column, goal=constrain))