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