Различия для максимального времени uuid в драйвере cql sh и Python cassandra - PullRequest
0 голосов
/ 07 января 2020

У меня ошибка, из-за которой мой код python не может найти запись в Cassandra и, похоже, сводится к различиям в функциях minTimeuuid / maxTimeuuid в cql sh по сравнению с драйвером python.

Когда я запускаю запрос в cql sh (столбец ts является TimeUUID):

cqlsh:mydb> SELECT minTimeuuid(unixTimestampOf(ts)), maxTimeuuid(unixTimestampOf(ts)), unixTimestampOf(ts), dateOf(ts) from mytable where ...;

 minTimeuuid(unixTimestampOf(ts))     | maxTimeuuid(unixTimestampOf(ts))     | unixTimestampOf(ts) | dateOf(ts)
--------------------------------------+--------------------------------------+---------------------
 177dc170-b8e3-11e1-8080-808080808080 | 177de87f-b8e3-11e1-7f7f-7f7f7f7f7f7f |       1339982128903 | 2012-06-18 03:15:28+0200

Когда я запускаю ту же вещь в Python:

Python 2.7.12 (default, Oct  8 2019, 14:14:10) 
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import cassandra.util
>>> from datetime import datetime
>>> dt = datetime(2012,6,18,1,15,28,903000)
>>> cassandra.util.max_uuid_from_time(dt)
UUID('177dc170-b8e3-11e1-bf7f-7f7f7f7f7f7f')
>>> cassandra.util.min_uuid_from_time(dt)
UUID('177dc170-b8e3-11e1-8080-808080808080')

Обратите внимание, что минимальные версии идентичны, но максимальное время uuid не равно:

Min (cqlsh first):                    |  Max (cqlsh first):
177dc170-b8e3-11e1-8080-808080808080  |  177de87f-b8e3-11e1-7f7f-7f7f7f7f7f7f
177dc170-b8e3-11e1-8080-808080808080  |  177dc170-b8e3-11e1-bf7f-7f7f7f7f7f7f

Я не понимаю, как они могут отличаться, какие-либо идеи? Я пробовал те же вещи в Python 3.5.2, а не в 2.7, как указано выше, с теми же результатами.

...