Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用sql数据返回中的for循环向python中的数组添加数据_Python_Sql_Arrays_Loops - Fatal编程技术网

使用sql数据返回中的for循环向python中的数组添加数据

使用sql数据返回中的for循环向python中的数组添加数据,python,sql,arrays,loops,Python,Sql,Arrays,Loops,我试图将数据添加到循环中的数组中,因为每一行都是列,每一行都返回 我的目标是将列排序为几个数组,但这似乎不起作用。我我整个下午都在谷歌上搜索如何用python实现这一点。W3学校正在演示类似的东西,但它不起作用,他们的简单数组示例(例如数组[0]=“文本”)也不会起作用,并且不断返回未定义NameError的错误:“ReturnedUser_id” 然后,我希望在将此代码转换为函数后传递这些数组 有人能帮我吗 谢谢 import mysql.connector mydb = mysql.con

我试图将数据添加到循环中的数组中,因为每一行都是列,每一行都返回

我的目标是将列排序为几个数组,但这似乎不起作用。我我整个下午都在谷歌上搜索如何用python实现这一点。W3学校正在演示类似的东西,但它不起作用,他们的简单数组示例(例如数组[0]=“文本”)也不会起作用,并且不断返回未定义NameError的错误:“ReturnedUser_id”

然后,我希望在将此代码转换为函数后传递这些数组

有人能帮我吗

谢谢

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

要解决当前体系结构的问题,您需要将逻辑替换为:

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类中添加更多的恶魔和功能,而不是传递三个列表,您只传递一个

您忘了定义ReturnedUser_id、ReturnedVMName和ReturnedVMTemplate-可能:
ReturnedVMTemplate=[]
,然后像使用
ReturnedVMTemplate.append()
Btw一样使用它-我强烈建议您创建一个
类VM
,而不是三个列表,而是从_行()添加一个
static方法从SQL行初始化类,并将所有数据存储在VM实例列表中:)选项a目前可能更容易使用。有没有一种方法可以将这三个数组都传递回去?是的,
返回a、b、c
应该可以。我想它实际上会返回一个3项元组