mysql forloop i SELECT-setning i python

stemmer
1

Jeg har liste over datoer

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

velger søket bør flech for de gitte datoer og lagre i csv-fil

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)

Dette fungerer for enkelt dato uten forloop. Mysql inne i sløyfen ikke fungerer. Ingen feil, men dataene er ikke skrevet. Jeg skrev med funksjon utenfor for loop, men ingen data er skrevet i csv.

Hjelp meg vær så snill

Publisert på 19/09/2018 klokken 12:59
kilden bruker
På andre språk...                            


1 svar

stemmer
0

To alternativer.

Alternativ 1: Bruk afor å legge stedet for å overskrive i løpet av hver sløyfe med w. Som dette:

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

Alternativ 2 (bedre): bruk SQL sin inklausul som dette:

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)

Og en ting til: hvis python strengen ikke vil gå over flere linjer, trenger du ikke """. Bare bruke en enkelt ".

Også lære hvordan du bruker:

  • Python string format
  • SQL-setninger med parametere (sikrere, raskere måte å sende parametere til SQL-setninger)
Svarte 19/09/2018 kl. 13:03
kilden bruker

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