У меня есть класс, чтобы генерировать данные:Получение Python для создания нового экземпляра каждый раз, когда
class dataGen():
#class to generate data.
def firstName():
firstName = 'Storm' + str(timeGen.timeGen())
return firstName
def lastName():
lastName = 'Trooper' + str(timeGen.timeGen())
return lastName
def randString():
rint = random.randint(1,20)
r4ndString = ''.join(random.choice(string.ascii_uppercase + string.ascii_lowercase + string.digits) for _ in range(rint))
return r4ndString
def email():
EmailA = dataGen.randString()
EmailB = dataGen.randString()
items = ['.com','.net','.org']
tld = random.choice(items)
return str(EmailA) + '@' + str(EmailB) + str(tld)
def empid(size=20, chars=string.ascii_uppercase + string.ascii_lowercase + string.digits):
return ''.join(random.choice(chars) for _ in range(size))
def ssnGen():
ssnGenD = random.randint(100000000,999999999)
return ssnGenD
класса решений SQL вызова:
class sqlConn():
#Class to handle all SQL connections
def realEmail(cEmail):
cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER=Dev1SQL1;DATABASE=TimeCurrent;Trusted_Connection=yes')
cursor = cnxn.cursor()
sql = 'exec tbl.usp_Lookup_Email "%s"' % cEmail
cursor.execute(sql)
data = cursor.fetchall()
return(data)
def realEmpID(cEmpID):
cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER=Dev1SQL1;DATABASE=TimeCurrent;Trusted_Connection=yes')
cursor = cnxn.cursor()
sql = 'exec tbl.usp_Lookup_EmplID "%s"' % cEmpID
cursor.execute(sql)
data = cursor.fetchall()
return(data)
def realEmpName(cFName, cLName):
cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER=Dev1SQL1;DATABASE=TimeCurrent;Trusted_Connection=yes')
cursor = cnxn.cursor()
value = (cFName, cLName)
sql = 'exec tbl.usp_Lookup_Name "%s", "%s"' % value
cursor.execute(sql)
data = cursor.fetchall()
return(data)
def realSSN(cSSN):
cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER=Dev1SQL1;DATABASE=TimeCurrent;Trusted_Connection=yes')
cursor = cnxn.cursor()
sql = ' exec tbl.usp_Lookup_SSN "%s"' % cSSN
cursor.execute(sql)
data = cursor.fetchall()
return(data)
... и у меня есть класс, который звонит что основано на результатах моего SQL-запроса.
def deID(HOLDERLIST):
#Takes in the holderList from holderClass, checks aganst the database to see if the fakeFeild for each of the values has data,
#If the feild does not return none, it uses that data. If it is none, then it generates new data.
for item in HOLDERLIST:
for idx, lis in enumerate(item):
if idx == 0:
fName = item[0]
lName = item[1]
name = sqlConn.realEmpName(fName, lName)
if name == None:
item[0] = dataGen.firstName()
item[1] = dataGen.lastName()
else:
item[0] = name[0][0]
item[1] = name[0][1]
elif idx == 2:
SSN = sqlConn.realSSN(item[idx])
if SSN == None:
item[idx] = dataGen.ssnGen()
else:
item[idx] = SSN
elif idx == 3:
email = sqlConn.realEmail(item[idx])
if email == None:
item[idx] = dataGen.email()
else:
item[idx] = email
print('Holderlist deID')
return(HOLDERLIST)
Мой Главный цикл
def main():
datagenInstance = dataGen()
SQLConnInstance = sqlConn()
CLIENT, filename, FILESTRUCT = selectFile()
PARSED = parse(filename)
HOLDERLIST = holderClass(PARSED, FILESTRUCT)
deIDedData = deID(HOLDERLIST)
deIDedFile = merge(PARSED, deIDedData, FILESTRUCT)
fileExport(filename, deIDedFile)
if __name__ == '__main__':
main()
HOLDERLIST это просто файл CSV, который разбирается в список 4 строк. Проблема, с которой я сталкиваюсь, заключается в том, что класс соединения SQL и класс dataGen не вызывают новые вызовы каждый раз. Каждый раз, когда цикл запускается, он должен создавать новый экземпляр двух вышеупомянутых классов. Я знаю, что в таких языках, как C# и C++, я могу прикрепить новый к фронту вызова, чтобы заставить язык создавать новый экземпляр каждый раз, когда он вызывается. Я прочитал литературу об использовании таких вещей, как в python, но похоже, что это помещено в объявление класса, и я действительно не очень хорошо разбираюсь в классах класса python.
Почему все эти классы? Вы не делаете ни одного экземпляра этих классов в любом месте, и ни один из методов не будет использовать какое-либо состояние экземпляра или работать с экземпляром вообще, если вы это сделали. – user2357112
Извините, забыли связать мой основной цикл. Вопрос отредактирован. –