У меня ошибка, из-за которой мой код 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, как указано выше, с теми же результатами.