forloop MySQL en la instrucción de selección en Python

votos
1

tengo lista de fechas

datefromto=['2018-06-16','2018-08-10','2018-09-12']

consulta de selección debe Flech para las fechas indicadas y almacenar en el archivo 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)

Esto está trabajando para la fecha único sin forloop. MySQL dentro de bucle no está funcionando. Sin errores, pero los datos no se escriben. Escribí el exterior con la función de bucle, pero no se escriben datos en formato CSV.

Ayudame por favor

Publicado el 19/09/2018 a las 12:59
fuente por usuario
En otros idiomas...                            


1 respuestas

votos
0

Dos opciones.

Opción 1: Utilice apara anexar en lugar de sobrescribir durante cada bucle con w. Me gusta esto:

myFile = open(students.csv, 'a')

Opción 2 (mejor): utilizar de SQL incláusula de la siguiente manera:

yesterbilling="select * from student_date where date(datetime) in ('" + "','".join(datefromto) + "') and status='attended' "
cursor.execute(yesterbilling)
yesterbillings = cursor.fetchall()

# now it's 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)

Y una cosa más: si su cadena de Python no va a abarcar varias líneas, que no es necesario """. Sólo tiene que utilizar una sola ".

También, aprender a utilizar:

Respondida el 19/09/2018 a las 13:03
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more