неверно интерпретируется `read_sql_query` для часового пояса pandas

#sql #pandas #amazon-web-services #sqlalchemy

#sql #pandas #amazon-веб-сервисы #sqlalchemy

Вопрос:

Я использую пакет под названием aws data wrangler для чтения таблицы MYSQL из каталога Клея в фрейм данных Pandas.

Шаги просты. Сначала создайте sql_engine и оператор sql, затем выполните оператор sql с помощью wr.db.read_sql_query(query, con=sql_engine)

Результирующий фрейм данных

 transaction_date                 created_on                modified_on
0     2017-10-04 00:00:00 2018-10-05 10:56:39.000000 2018-10-05 10:56:39.000000
1     2017-10-04 00:00:00 2018-10-05 10:56:39.000000 2018-10-05 10:56:39.000000
2     2017-10-04 00:00:00 2018-10-05 10:56:39.000000 2018-10-05 10:56:39.000000
3     2017-10-04 00:00:00 2018-10-05 10:56:39.000000 2018-10-05 10:56:39.000000
4     2017-10-04 00:00:00 2018-10-05 10:56:39.000000 2018-10-05 10:56:39.000000
...                   ...                        ...                        ...
33901 2020-11-05 06:20:25 2020-11-06 06:20:34.100835 2020-11-06 06:20:34.100877
33902 2020-11-05 06:20:34 2020-11-06 06:20:43.551528 2020-11-06 06:20:43.551551
33903 2020-11-05 06:34:58 2020-11-06 06:35:34.719571 2020-11-06 06:35:34.719592
33904 2020-11-05 06:35:34 2020-11-06 06:35:45.229119 2020-11-06 06:35:45.229141
33905 2020-11-05 06:35:45 2020-11-06 06:36:03.171246 2020-11-06 06:36:03.171269
  

в то время как дата-время в базе данных

 transaction_date                 created_on                modified_on
2017-10-04 08:00:00 2018-10-05 18:56:39 2018-10-05 18:56:39
2017-10-04 08:00:00 2018-10-05 18:56:39 2018-10-05 18:56:39
2017-10-04 08:00:00 2018-10-05 18:56:39 2018-10-05 18:56:39
2017-10-04 08:00:00 2018-10-05 18:56:39 2018-10-05 18:56:39
  

Я живу в Гонконге. Дата-время в фрейме данных, похоже, вычитается на 8 часов.

Я также задал вопрос в Github. Разработчик предложил мне указать часовой пояс на уровне сеанса, например,

 sql_engine = wr.catalog.get_engine(connection,
    connect_args={
        "init_command": "SET SESSION time_zone=' 00:00'"
    })
  

Но, похоже, что изменение часового пояса сеанса ничего не меняет. Это означает, что даже если я меняю часовой пояс на UTC или UTC 8, результирующий фрейм данных остается тем же.