Получить заголовки SQL из Numpy Array в Python - PullRequest
5 голосов
/ 05 мая 2011

Ниже я могу получить данные строк и столбцов из SQL:
Как получить заголовки таблиц как часть набора результатов или массива?

    top = csr.execute("Select * from bigtop")
    d=list(top)
    a = np.asarray(d, dtype='object')
    print a

Как я и просил здесь: Как создать файл CSV из базы данных в Python?

Ответы [ 3 ]

4 голосов
/ 06 мая 2011

Это самостоятельный пример, который иллюстрирует общую идею.numpy.recarray ваш друг,

from sqlite3 import connect
from numpy import asarray

db = connect(":memory:")
c = db.cursor()
c.execute('create table bigtop (a int, b int, c int)')

for v in [(1,2,3),(4,5,6),(7,8,9)]:
    c.execute('insert into bigtop values (?,?,?)',v)

s = c.execute('select * from bigtop')

h = [(i[0],int) for i in c.description]

# You can also use 'object' for your type
# h = [(i[0],object) for i in c.description]

a = asarray(list(s),dtype=h)

print a['a']

дает первый столбец,

[1 4 7]

и

print a.dtype

дает имя и тип каждого столбца,

[('a', '<i4'), ('b', '<i4'), ('c', '<i4')]

альтернативно, если вы использовали object в качестве типа, вы получите,

[('a', '|O4'), ('b', '|O4'), ('c', '|O4')]
2 голосов
/ 05 мая 2011

csr.description должны иметь заголовки

1 голос
/ 06 мая 2011

Если бы вы хотели, чтобы имена столбцов были первой строкой в ​​вашем массиве, вы бы сделали

top = csr.execute("Select * from bigtop")
d=list(top)
a = np.asarray([[x[0] for x in top.description]] + d, dtype='object')

и получили бы что-то вроде

array([[heading1, heading2, heading3, ...],
       [val1, val2, val3, ...],
           ...
           , dtype=object)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...