tango-controls/PyTangoArchiving

Reading 2D attributes

Opened this issue · 2 comments

Hi,

i'm trying to read 2D attribute. It is an image (att_array_devdouble). Here is my code snippet:

from PyTangoArchiving import Reader

rd = Reader(db="hdbpp", config="pim:pam@pom")

image = 'r1-01/dia/r1-01-dia-bpmccd01/resimage'

val = rd.get_attribute_values(image, start_date='2020-10-06 7:00', stop_date="2020-10-06 7:02")

and here is what i get:

None.Reader WARNING 2020-10-11 17:08:23.268: In PyTangoArchiving.Reader.get_attribute_values(hdbpp,r1-01/dia/r1-01-dia-bpmccd01/resimage,2020-10-06 07:00:00,2020-10-06 07:02:00)
HDBpp WARNING 2020-10-11 17:08:23.268: HDBpp.get_attribute_values(r1-01/dia/r1-01-dia-bpmccd01/resimage,2020-10-06 07:00:00,2020-10-06 07:02:00,0,decimate=0,{})
HDBpp   ERROR 2020-10-11 17:08:23.304: Query(select CAST(UNIX_TIMESTAMP(data_time) as DOUBLE),idx,value_r,quality from att_array_devdouble_ro where att_conf_id = 2752 and data_time between '2020-10-06 07:00:00' and '2020-10-06 07:02:00' order by data_time) failed!
HDBpp WARNING 2020-10-11 17:08:23.304: HDBpp.get_attribute_values((2752L, 39L, 'att_array_devdouble_ro'),2020-10-06 07:00:00,2020-10-06 07:02:00,0,decimate=0,{})
HDBpp   ERROR 2020-10-11 17:08:23.331: Query(select UNIX_TIMESTAMP(data_time),idx,value_r,quality from att_array_devdouble_ro where att_conf_id = 2752 and data_time between '2020-10-06 07:00:00' and '2020-10-06 07:02:00' order by data_time) failed!
get_attribute_values(*(<PyTangoArchiving.hdbpp.config.HDBpp object at 0x7f6e22d770d0>, (2752L, 39L, 'att_array_devdouble_ro'), '2020-10-06 07:00:00', '2020-10-06 07:02:00', False, 0, True, 'quality', 0, False),**{'as_double': False}) failed!
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/PyTangoArchiving/utils.py", line 113, in execute
    return self.f(*args,**kwargs)
  File "/usr/local/lib/python2.7/dist-packages/PyTangoArchiving/hdbpp/config.py", line 640, in get_attribute_values
    result = self.Query(query)
  File "/usr/local/lib/python2.7/dist-packages/fandango/db.py", line 232, in Query
    q.execute(query)
  File "/usr/local/lib/python2.7/dist-packages/MySQLdb/cursors.py", line 205, in execute
    self.errorhandler(self, exc, value)
  File "/usr/local/lib/python2.7/dist-packages/MySQLdb/connections.py", line 36, in defaulterrorhandler
    raise errorclass, errorvalue
OperationalError: (1054, "Unknown column 'idx' in 'field list'")

get_attribute_values(*(<PyTangoArchiving.hdbpp.config.HDBpp object at 0x7f6e22d770d0>, 'r1-01/dia/r1-01-dia-bpmccd01/resimage', '2020-10-06 07:00:00', '2020-10-06 07:02:00'),**{'unixtime': True, 'N': 0}) failed!
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/PyTangoArchiving/utils.py", line 113, in execute
    return self.f(*args,**kwargs)
  File "/usr/local/lib/python2.7/dist-packages/PyTangoArchiving/hdbpp/config.py", line 645, in get_attribute_values
    as_double=False,**kwargs)
  File "/usr/local/lib/python2.7/dist-packages/PyTangoArchiving/utils.py", line 96, in __call__
    return self.execute(*args,**kwargs)
  File "/usr/local/lib/python2.7/dist-packages/PyTangoArchiving/utils.py", line 113, in execute
    return self.f(*args,**kwargs)
  File "/usr/local/lib/python2.7/dist-packages/PyTangoArchiving/hdbpp/config.py", line 640, in get_attribute_values
    result = self.Query(query)
  File "/usr/local/lib/python2.7/dist-packages/fandango/db.py", line 232, in Query
    q.execute(query)
  File "/usr/local/lib/python2.7/dist-packages/MySQLdb/cursors.py", line 205, in execute
    self.errorhandler(self, exc, value)
  File "/usr/local/lib/python2.7/dist-packages/MySQLdb/connections.py", line 36, in defaulterrorhandler
    raise errorclass, errorvalue
OperationalError: (1054, "Unknown column 'idx' in 'field list'")

Traceback (most recent call last):
  File "/home/michal/pycharm/data/main.py", line 18, in <module>
    val = rd.get_attribute_values(image, start_date='2020-10-06 7:00', stop_date="2020-10-06 7:02")
  File "/usr/local/lib/python2.7/dist-packages/PyTangoArchiving/reader.py", line 856, in get_attribute_values
    asHistoryBuffer, N, notNone, GET_LAST)
  File "/usr/local/lib/python2.7/dist-packages/PyTangoArchiving/reader.py", line 938, in get_attribute_values_from_db
    N=N,unixtime=True)
  File "/usr/local/lib/python2.7/dist-packages/PyTangoArchiving/utils.py", line 96, in __call__
    return self.execute(*args,**kwargs)
  File "/usr/local/lib/python2.7/dist-packages/PyTangoArchiving/utils.py", line 113, in execute
    return self.f(*args,**kwargs)
  File "/usr/local/lib/python2.7/dist-packages/PyTangoArchiving/hdbpp/config.py", line 645, in get_attribute_values
    as_double=False,**kwargs)
  File "/usr/local/lib/python2.7/dist-packages/PyTangoArchiving/utils.py", line 96, in __call__
    return self.execute(*args,**kwargs)
  File "/usr/local/lib/python2.7/dist-packages/PyTangoArchiving/utils.py", line 113, in execute
    return self.f(*args,**kwargs)
  File "/usr/local/lib/python2.7/dist-packages/PyTangoArchiving/hdbpp/config.py", line 640, in get_attribute_values
    result = self.Query(query)
  File "/usr/local/lib/python2.7/dist-packages/fandango/db.py", line 232, in Query
    q.execute(query)
  File "/usr/local/lib/python2.7/dist-packages/MySQLdb/cursors.py", line 205, in execute
    self.errorhandler(self, exc, value)
  File "/usr/local/lib/python2.7/dist-packages/MySQLdb/connections.py", line 36, in defaulterrorhandler
    raise errorclass, errorvalue
_mysql_exceptions.OperationalError: (1054, "Unknown column 'idx' in 'field list'")

Data is there (checked by a Viewer). What am i doing wrong here? If i do a query with scalar attributes everything works perfectly fine.
I use PyTangoArchiving 8.3.1, fandango 14.8.0, MySQL-python 1.2.5 and PyTango 9.2.5

Cheers,
Michal

Hi, sorry for the late answer

It is a bug with the column schema. Anyway I updated the code in github to the latest version, but if you try and it fails again then please paste the result of this code (update to latest fandango):

api = PyTangoArchiving.HDBpp(host='...',db_name='hdbpp',user='...',passwd='...')
table = api.get_attr_id_type_table(attribute)[-1]
print(api.getTableCreator(table))

Hope it helps,

Sergi

Hi,

If possible, login to gitlab, as the project has been moved there, and comment with your own username:

https://gitlab.com/tango-controls/hdbpp/libhdbpp-pytangoarchiving/-/issues/17

Did you tried the code I pasted above? Keep in mind that PyTangoArchiving is currently python 2 only (at the moment).

If you need DB access from python 3, try:

https://gitlab.com/tango-controls/hdbpp/libhdbpp-python

Sergi