Повторное использование данных в Python - PullRequest
0 голосов
/ 11 апреля 2011

Я пытаюсь вытащить данные один раз из Mysql в «c».Затем создайте массив NUMPY и данные из данных.Кажется, что когда я застегиваю 'c', он больше не остается в исходной форме.Можно ли это сделать?

import csv, pyodbc#, 
from numpy import *
import numpy as np


csr = cxn.cursor()
c = csr.execute("Select * from p.s")
s = zip(*c)
data = s[0]

for each in data:
    v= dict((each, []) for each in data)
print v

d=[]
for each in c:
    d.append(each)

a = asarray(d)
print a

Ответы [ 2 ]

2 голосов
/ 11 апреля 2011

Еще несколько комментариев:

  1. Этот код

    for each in data:
        v= dict((each, []) for each in data)
    print v
    

    создает один и тот же словарь снова и снова. Вы можете просто отбросить внешний цикл for и получить тот же результат.

  2. часть

    d=[]
    for each in c:
        d.append(each)
    

    эквивалентно

    d = list(c)
    
  3. Весь ваш код можно записать как

    csr = cxn.cursor()
    c = csr.execute("Select * from p.s")
    a = numpy.fromiter(c)
    v = dict((key, []) for key in a[:,0])
    
2 голосов
/ 11 апреля 2011

zip(*c) использует итератор c, поэтому вам нужно его заново создать позже, повторно запустив c = csr.execute("Select * from p.s") или сохранив его содержимое до zip, как c = list(c)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...