J'essaie d'écrire une requête simple à une base de données sqlite dans un script python. Pour tester si mes paramètres étaient corrects, j'ai essayé d'exécuter la requête depuis la ligne de commande ipython. Il ressemblait à quelque chose comme ceci:Pourquoi IPython ne peut-il pas retourner des enregistrements avec plusieurs champs lors de l'envoi d'une requête à sqlite?
import sqlite3
db = 'G:\path\to\db\file.sqlite'
conn = sqlite3.connect(db)
results = conn.execute('SELECT * FROM studies').fetchall()
pour une raison quelconque, mes résultats sont revenus totalement vides. Puis j'ai essayé une autre requête de test:
results = conn.execute('SELECT id FROM studies').fetchall()
Qui a retourné correctement. J'ai pensé qu'il y avait un problème avec l'astérisque [WRONG, VOIR DEUXIÈME MISE À JOUR CI-DESSOUS], donc j'ai essayé la requête 'SELECT * FROM studies' à partir d'une ligne de commande python par défaut. Lo et voici, il est retourné correctement. J'ai essayé toutes les manières normales d'échapper à l'astérisque seulement pour être rencontré par une grande variété de messages d'erreur. Est-il possible d'exécuter cette requête dans IPython? EDIT: Désolé, j'ai incorrectement supposé IronPython et IPython étaient les mêmes. Ce que je voulais dire, c'était la ligne de commande IPython, pas le framework IronPython.
EDIT2: D'accord, il se trouve l'astérisque ne fonctionne comme le montre cette requête réussie:
'SELECT COUNT(*) FROM studies'
Des suggestions affichées ici, il se trouve les résultats d'erreur d'essayer de retourner les enregistrements avec plusieurs champs, c'est-à-dire:
'SELECT field1,field2 FROM studies'
qui entraîne toujours des enregistrements renvoyés. J'ai changé le titre de la question en conséquence.
La simulation de la requête '*' n'a également renvoyé rien. Il semble que la requête ne fonctionne que lorsque je demande un champ. J'ai essayé la requête que vous avez suggérée dans la ligne de commande habituelle de Python, et j'ai obtenu la bonne réponse. Cela m'amène à croire que ironpython fait quelque chose d'un peu différemment avant que la requête SQL soit envoyée. – Francisco
Si vous exécutez simplement la requête à l'invite de l'interpréteur, que dit la valeur de retour? – Christopher