首先。。。在过去的几个月里,我对Python还是个新手,到现在为止,它一直都很顺利。但我在这里被难住了,我差点把我的头撞破显示器。你知道吗
当我运行这个脚本时,我只得到写入文件的最后一行数据,而我需要的是所有的数据行都以class部分的格式写入。你知道吗
卷_小时.db至少有多行,但只有最后一行正在写入。 这是我的剧本:
from vlist import VLIST
import sqlite3
import decimal
import os
import sys
import uuid
VERSION = "oops"
DEVICE_SOFTWARE_VERSION = "OOPS"
FILENAME = "VHOURS.txt"
conn = sqlite3.connect("VOL_HOURS.db")
def fromVolunteers():
conn = sqlite3.connect("VOL_HOURS.db")
with conn:
cur = conn.cursor()
cur.execute("SELECT BOB, DAVE, CAROL, ANDY, CARL, DANNY, CHERYL, CYNTHIA, TARA, SCOTT, ASHLEY, CRYSTAL FROM VOLUNTEERS")
rows = cur.fetchall()
for row in rows:
bob = row[0]
dave = row[1]
carol = row[2]
andy= row[3]
carl = row[4]
danny = row [5]
cheryl = row [6]
cynthia = row [7]
tara = row [8]
scott = row [9]
ashley = row [10]
crystal = row [11]
def main():
fromVolunteers()
testOutput = open(FILENAME, "w+")
vlist = VLIST()
vlist.setBob(bob)
vlist.setDave(dave)
vlist.setCarol(carol)
vlist.setAndy(andy)
vlist.setCarl(carl)
vlist.setDanny(danny)
vlist.setCheryl(cheryl)
vlist.setCynthia(cynthia)
vlist.setTara(tara)
vlist.setScott(scott)
vlist.setAshley(ashley)
vlist.setCrystal(crystal)
vlist.dump_object(testOutput)
testOutput.flush()
testOutput.close()
cur.close()
conn.close()
if __name__ == "__main__":
sys.exit(main())
从中提取的类文件是:
class VLIST:
def __init__(self):
self.bob = ""
self.dave = ""
self.carol = ""
self.andy = ""
self.carl = ""
self.danny = ""
self.cheryl = ""
self.cynthia = ""
self.tara = ""
self.scott = ""
self.ashley = ""
self.crystal = ""
def setBob(self,bob):
self.bob = bob
return
def setDave(self,dave):
self.dave = dave
return
def setCarol(self,carol):
self.carol = carol
return
def setAndy(self,andy):
self.andy = andy
return
def setCarl(self,carl):
self.carl = carl
return
def setDanny(self,danny):
self.danny = danny
return
def setCheryl(self,cheryl):
self.cheryl = cheryl
return
def setCynthia(self,cynthia):
self.cynthia = cynthia
return
def setTara(self,tara):
self.tara = tara
return
def setScott(self,scott):
self.scott = scott
return
def setAshley(self,ashley):
self.ashley = ashley
return
def setCrystal(self,crystal):
self.crystal = crystal
return
def dump_object(self,testOutput):
testOutput.write("VLIST,"+self.bob+","+self.dave+","+self.carol+","+self.andy+","+self.carl+","+self.danny+","+self.cheryl+","+self.cynthia+","+self.tara+","+self.scott+","+self.ashley+","+self.crystal+","+"\n")
我事先道歉,如果这是混乱的,就像我说的,我是新来的。谢谢你抽出时间。你知道吗
在迭代
for row in rows:
中,您只是覆盖变量bob
、dave
等的前一个值。因此,在迭代结束时,这些变量只有最后一个值。你知道吗从
fromVolunteers()
中删除迭代。此函数只应设置rows
变量,并将迭代放在main
函数中:下面是代码的重构版本。在不知道数据库模式、它包含什么或有示例文件可供测试的情况下,这只是您可以做的工作的近似值。由于
VOLUNTEERS
表继续添加或删除列,您只需更改代码顶部的COLUMNS
元组即可补偿更改。你知道吗相关问题 更多 >
编程相关推荐