добавление данных в массивы в python с циклами for из sql возврата данных - PullRequest
0 голосов
/ 25 сентября 2019

Я пытаюсь добавить данные в массив внутри цикла, поскольку каждая строка является столбцом, а строка возвращается.

Моя цель состоит в том, чтобы отсортировать столбцы в несколько массивов, но, похоже, это не работает.Я весь день гуглил о том, как это сделать на python.Школы W3 демонстрируют что-то подобное, но это не будет работать, и их простые примеры массивов не будут работать, например, array [0] = "text", и продолжает возвращать ошибки, которые NameError: 'ReturnedUser_id' не определено.

I тогдахочу передать эти массивы, как только я превращу этот код в функцию.

Кто-нибудь может мне помочь?

Спасибо

import mysql.connector

mydb = mysql.connector.connect(

import mysql.connector

mydb = mysql.connector.connect(
  host="xxx.xxx.xxx.xxx",
  user="xxxxxxx",
  passwd="xxxxxx",
  database="vmware"
)

print(mydb)

mycursor = mydb.cursor()

mycursor.execute("select UserID, VMName, VMTemplate FROM VM WHERE CommissionStatus='commissioned';")


c = 0
for (User_id, VMName, VMTemplate) in mycursor:

    c += 1

    ReturnedUser_id[c] = User_id
    ReturnedVMName[c] = VMName
    ReturnedVMTemplate[c] = VMTemplate

1 Ответ

0 голосов
/ 25 сентября 2019

Чтобы решить вашу проблему с текущей архитектурой, вам нужно заменить свою логику на:

ReturnedUser_id = []
ReturnedVMName = [] 
ReturnedVMTemplate = []

for (User_id, VMName, VMTemplate) in mycursor:
    ReturnedUser_id.append(User_id)
    ReturnedVMName.append(VMName)
    ReturnedVMTemplate.append(VMTemplate)

Однако я бы сделал:


class VM:
    def __init__(self, user_id, name, template):
        self.user_id = user_id
        self.name = name
        self.template = template

    @staticmethod
    def from_row(row):
        return VM(row[0], row[1], row[2])

all_vms = []
for row in mycursor:
    all_vms.append(VM.from_row(row))

Это позволит вам позже добавить больше друзейи функциональность в классе VM, и вместо того, чтобы обойти три списка, вы передаете только один!

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