Estoy usando el módulo sqlite3
de Python y me gustaría obtener una lista de todas las columnas en una tabla cuando la tabla no tiene ninguna fila.Obtener lista de nombres de columna de una tabla vacía
Normalmente, si se crea una base de datos como
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()
Entonces puedo obtener los nombres de columna con algo así como
conn.row_factory = sqlite3.Row
c = conn.cursor()
c.execute('select * from stocks')
r = c.fetchone()
print r.keys()
El problema es, si la tabla está vacía inicialmente, c.fetchone()
vuelve None
. Si hay filas comprometidas, entonces puedo obtener una lista de los nombres de las columnas.
¿Hay alguna otra manera de hacerlo? Pasé por el sqlite3
oficial, pero no pude encontrar nada útil en ese sentido.
Supongo que podría poner algunos datos ficticios en la tabla, luego recuperar los nombres de las columnas y luego eliminar la fila, pero esperaba que hubiera una forma más elegante de hacerlo.
Editar:
parece que hay algunas maneras de hacerlo:
Obtener el SQL que se utilizó para crear la tabla:
c.execute("""SELECT sql FROM sqlite_master WHERE tbl_name = 'stocks' AND type = 'table'""")
uso del
PRAGMA
instrucción de sqlite3:c.execute("PRAGMA table_info(stocks)")
utilizar el campo de la
.description
Cursor
objetoc.execute('select * from stocks') r=c.fetchone() print c.description
De éstos, No.2 parece el más simple y más directo. Gracias por toda la ayuda.
'seleccionar ... límite 1', ¿no? – dan3