Maison  >  Questions et réponses  >  le corps du texte

python pymysql exécute l'instruction SQL qui compare le temps. Elle peut être exécutée en douceur dans MySQL, mais pourquoi signale-t-elle une erreur lorsqu'elle est exécutée en python ?

version python : 3.5 version mysql : 5.6
python pymysql exécute l'instruction sql pour comparer l'heure. Elle peut être exécutée en douceur dans mysql, mais une erreur est signalée lors de l'exécution en python ; imprimante de présence, en fonction du numéro d'employé Filtrez ceux qui sont en retard et partent tôt
Filtrez ceux qui arrivent après 7h30 et avant 17h30 dans la base de données ;

Structure des tables de base de données :

Ce qui suit est la déclaration SQL
select * from kaoqinjilu WHERE gonghao = 6063 and date_format(datatime,'%Y-%m-%d %H:%i:%s')>DATE_ADD(date_format(datatime,'%Y-%m-%d'),INTERVAL "7:30:00" HOUR_SECOND)
and date_format(datatime,'%Y-%m-%d %H:%i:%s')<DATE_ADD(date_format(datatime,'%Y-%m-%d'),INTERVAL "17:30:00" HOUR_SECOND);

Résultat d'exécution, obtenez le résultat en douceur :

code python :
import pymysql.cursors
#连接数据库
connect = pymysql.connect(host='127.0.0.1',port=3306, user='root', passwd='111111', db='test',charset='utf8',)
#获取游标
cursor = connect.cursor()

sql = "select * from kaoqinjilu WHERE gonghao = 6063 AND date_format(datatime,'%%Y-%%m-%%d %%H:%%i:%%s')>DATE_ADD(date_format(datatime,'%%Y-%%m-%%d'),INTERVAL '7:30:00' HOUR_SECOND)
and date_format(datatime,'%%Y-%%m-%%d %%H:%%i:%%s')<DATE_ADD(date_format(datatime,'%%Y-%%m-%%d'),INTERVAL '17:30:00' HOUR_SECOND)"
cursor.execute(sql)

#提交
connect.commit()

for row in cursor.fetchall():
    print(row)
print('迟到早退人数',cursor.rowcount)

Message d'erreur :

C:\Users\gsd\AppData\Local\Programs\Python\Python35\python.exe F:/100lainxiti/考勤查询.py
  File "F:/100lainxiti/考勤查询.py", line 7
    sql = "select * from kaoqinjilu WHERE gonghao = 6063 AND date_format(datatime,'%%Y-%%m-%%d %%H:%%i:%%s')>DATE_ADD(date_format(datatime,'%%Y-%%m-%%d'),INTERVAL '7:30:00' HOUR_SECOND)
                                                                                                                                                                                        ^
SyntaxError: EOL while scanning string literal

Process finished with exit code 1
曾经蜡笔没有小新曾经蜡笔没有小新2663 Il y a quelques jours1472

répondre à tous(2)je répondrai

  • ringa_lee

    ringa_lee2017-07-04 13:45:45

    Essayez d'utiliser des instructions multilignes

    """ ...... 
        ...... 
    """

    Forfait

    répondre
    0
  • 三叔

    三叔2017-07-04 13:45:45

    Après avoir lu les commentaires ci-dessus, voyez ceci : https://stackoverflow.com/que...

    Lors de l'utilisation d'instructions MySQL en Python, il n'est pas nécessaire d'ajouter %来转义% Le module MySQL de Python ajoutera des caractères d'échappement par défaut.

    répondre
    0
  • Annulerrépondre