Pymysql "Неверное значение даты и времени: '20120101240000'" - PullRequest
0 голосов
/ 07 ноября 2018

pymysql выдает ошибку

"pymysql \ cursors.py: 170: Предупреждение: (1292," Неверное значение даты и времени: '20120101240000' ") result = self._query (query) "

Но когда я печатаю SQL-запрос в терминале и запускаю его в MySQL Workbench, он работает нормально.

Код Python:

import pandas as pd
import datetime
import pymysql

#AWS connection variables
host=""
port=
dbname=""
user=""
password=""

conn = pymysql.connect(host, user=user,port=port, passwd=password, db=dbname)

for delivery_datetime in [datetime.datetime(2012,1,1) + datetime.timedelta(hours=x) for x in range(365*24)]:
    for cop_hour in range(1,48):

        sql = """

        SELECT a.Delivery_Date, a.Hour_Ending, sum(a.Eff_HASL) as total_eff_HASL  from aspire_ercot_cop.cop2012 as a
        inner join (select Resource_Name, Delivery_Date, Hour_Ending, max(submit_time) as max_submit
                from aspire_ercot_cop.cop2012
                where (Submit_Time < cast(Delivery_Date as datetime) + Hour_Ending - interval {0} hour)
                        and (Delivery_Date ='{1}') and (Hour_Ending = '{2}:00:00')
                group by resource_name, delivery_date, hour_ending
        ) as b
        on a.resource_name = b.resource_name and a.delivery_date = b.delivery_date and a.hour_ending = b.hour_ending and a.submit_time = b.max_submit
        INNER JOIN(select Resource_Name, Delivery_Date, Hour_Ending, submit_time, max(PITStop) as max_stop
                from aspire_ercot_cop.cop2012
                where (Submit_Time < cast(Delivery_Date as datetime)- interval {0} hour)
                        and (Delivery_Date ='{1}') and (Hour_Ending = '{2}:00:00')
                group by resource_name, delivery_date, hour_ending, Submit_Time
        )as c
        on a.resource_name = c.resource_name and a.delivery_date = c.delivery_date and a.hour_ending = c.hour_ending and a.PITStop = c.max_stop
        where (a.Delivery_Date ='{1}') and (a.Hour_Ending ='{2}:00:00')
        ;""" 


        sql = sql.format(cop_hour, delivery_datetime.date(),str(delivery_datetime.hour+1).zfill(2))


        df_cop = pd.read_sql(eff_COP_sql, conn)

Когда я добираюсь до "df_cop = pd.read_sql (eff_COP_sql, conn)", он выдает ошибку.

Когда я отлаживаю и печатаю запрос, он выглядит нормально и отлично работает в MySQL Workbench:

SELECT a.Delivery_Date, a.Hour_Ending, sum(a.Eff_HASL) as total_eff_HASL  from aspire_ercot_cop.cop2012 as a
        inner join (select Resource_Name, Delivery_Date, Hour_Ending, max(submit_time) as max_submit
                from aspire_ercot_cop.cop2012
                where (Submit_Time < cast(Delivery_Date as datetime) + Hour_Ending - interval 1 hour)
                        and (Delivery_Date ='2012-01-01') and (Hour_Ending = '01:00:00')
                group by resource_name, delivery_date, hour_ending
        ) as b
        on a.resource_name = b.resource_name and a.delivery_date = b.delivery_date and a.hour_ending = b.hour_ending and a.submit_time = b.max_submit
        INNER JOIN(select Resource_Name, Delivery_Date, Hour_Ending, submit_time, max(PITStop) as max_stop
                from aspire_ercot_cop.cop2012
                where (Submit_Time < cast(Delivery_Date as datetime)- interval 1 hour)
                        and (Delivery_Date ='2012-01-01') and (Hour_Ending = '01:00:00')
                group by resource_name, delivery_date, hour_ending, Submit_Time
        )as c
        on a.resource_name = c.resource_name and a.delivery_date = c.delivery_date and a.hour_ending = c.hour_ending and a.PITStop = c.max_stop
        where (a.Delivery_Date ='2012-01-01') and (a.Hour_Ending ='01:00:00')
        ;

Любая помощь будет принята с благодарностью!

Спасибо

...