J'utilise le module sqlite3
de Python et j'aimerais obtenir une liste de toutes les colonnes d'une table quand la table n'a pas de ligne.Récupère la liste des noms de colonnes d'une table vide
Normalement, si je crée une base de données comme
import sqlite3
conn = sqlite3.connect(":memory:")
c = conn.cursor()
# create the table schema
c.execute('''create table stocks
(date text, trans text, symbol text,
qty real, price real)''')
conn.commit()
c.close()
Je peux obtenir les noms de colonnes avec quelque chose comme
conn.row_factory = sqlite3.Row
c = conn.cursor()
c.execute('select * from stocks')
r = c.fetchone()
print r.keys()
Le problème est, si la table est initialement vide, c.fetchone()
retours None
. S'il y a des lignes validées, alors je peux obtenir une liste des noms de colonnes.
Existe-t-il une autre façon de le faire? Je suis allé à travers le sqlite3
module documentation officiel, mais n'a pas pu trouver quelque chose d'utile à cet égard.
Je suppose que je pourrais mettre des données factices dans la table, puis récupérer les noms des colonnes et ensuite supprimer la ligne, mais j'espérais qu'il y avait une façon plus élégante de le faire.
Edit:
Semble il y a quelques façons de le faire:
Obtenez le SQL qui a été utilisé pour créer la table:
c.execute("""SELECT sql FROM sqlite_master WHERE tbl_name = 'stocks' AND type = 'table'""")
Utilisez le
PRAGMA
déclaration de sqlite3:c.execute("PRAGMA table_info(stocks)")
Utilisez le champ
.description
de l'objetCursor
c.execute('select * from stocks') r=c.fetchone() print c.description
Parmi ceux-ci, n ° 2 semble la plus simple et la plus simple. Merci à tous pour votre aide.
'sélectionner ... limite 1', non? – dan3