Heim  >  Fragen und Antworten  >  Hauptteil

Python pymysql führt die SQL-Anweisung aus, die die Zeit vergleicht. Sie kann in MySQL reibungslos ausgeführt werden, aber warum wird bei der Ausführung in Python ein Fehler gemeldet?

Python-Version: 3.5 MySQL-Version: 5.6
Python PyMySQL führt die SQL-Anweisung aus und vergleicht die Zeit. Sie kann in MySQL reibungslos ausgeführt werden, bei der Ausführung in Python wird jedoch ein Fehler gemeldet.
Die Datenbanktabelle enthält die vom Anwesenheitsdrucker exportierten Anwesenheitsdaten . Gemäß der Mitarbeiternummer. Überprüfen Sie diejenigen, die zu spät kommen und früher gehen.
Überprüfen Sie diejenigen, die nach 7:30:00 Uhr und vor 17:30:00 Uhr eintreffen


Datenbanktabellenstruktur:


Das Folgende ist die SQL-Anweisung

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);

Ausführungsergebnis, erhalten Sie das Ergebnis reibungslos:


Python-Code:

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)

Fehlermeldung:

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 Tage vor1471

Antworte allen(2)Ich werde antworten

  • ringa_lee

    ringa_lee2017-07-04 13:45:45

    多行语句试试用

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

    进行包裹

    Antwort
    0
  • 三叔

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

    看了楼上的评论,参见这个:https://stackoverflow.com/que...

    Python里使用MySQL语句,不需要添加%来转义%,Python的MySQL模块会默认添加转义字符。

    Antwort
    0
  • StornierenAntwort