У меня есть список дат
datefromto=['2018-06-16','2018-08-10','2018-09-12']
выбор запроса должен зависеть для заданных дат и хранить в csv файле
for dates in datefromto:
yesterbilling="""select * from student_date where date(datetime)= """+str(dates)+""" and daynumber="""+str(time.strftime("%w", time.strptime(dates, "%Y-%m-%d")))+""" and status='attended' """
cursor.execute(yesterbilling)
yesterbillings = cursor.fetchall()
myFile = open(students.csv, 'w')
with myFile:
writer = csv.writer(myFile)
writer.writerows(yesterbillings)
print("Writing complete")
Это работает для одной даты без forloop. Mysql внутри цикла не работает. Нет ошибки, но данные не записываются. Я написал функцию с внешней функцией для цикла, но данные не записываются в csv.
Помоги мне, пожалуйста
Два варианта.
Вариант 1: Использование для добавления вместо перезаписи во время каждого цикла с a
w
. Как это:
myFile = open(students.csv, 'a')
Вариант 2 (лучше): используйте предложение SQL in
следующем виде:
yesterbilling="select * from student_date where date(datetime) in ('" + "','".join(datefromto) + "') and status='attended' "
cursor.execute(yesterbilling)
yesterbillings = cursor.fetchall()
# now it safe to use 'w' because the writing will be done at once
myFile = open(students.csv, 'w')
with myFile:
writer = csv.writer(myFile)
writer.writerows(yesterbillings)
И еще одно: если ваша строка python не будет охватывать несколько строк, вам не понадобится """
Просто используйте сингл "
.
Кроме того, узнайте, как использовать: