Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
T
tango
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Iterations
Wiki
Requirements
Jira issues
Open Jira
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Locked files
Build
Pipelines
Jobs
Pipeline schedules
Test cases
Artifacts
Deploy
Releases
Package registry
Container registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Code review analytics
Issue analytics
Insights
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
LOFAR2.0
tango
Commits
f7d48cbe
Commit
f7d48cbe
authored
3 years ago
by
Stefano Di Frischia
Browse files
Options
Downloads
Patches
Plain Diff
L2SS-234
: Add mapper classes to archiving base
parent
e953c311
No related branches found
No related tags found
1 merge request
!59
L2SS-234: Inspect archive from python
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
devices/toolkit/archiver.py
+0
-4
0 additions, 4 deletions
devices/toolkit/archiver.py
devices/toolkit/archiver_base.py
+309
-14
309 additions, 14 deletions
devices/toolkit/archiver_base.py
jupyter-notebooks/archiving_test_v2.ipynb
+145
-43
145 additions, 43 deletions
jupyter-notebooks/archiving_test_v2.ipynb
with
454 additions
and
61 deletions
devices/toolkit/archiver.py
+
0
−
4
View file @
f7d48cbe
...
...
@@ -112,8 +112,6 @@ def get_attribute_value_by_hours(attribute_fqname: str, hours: float = 1.0):
join
(
Attribute
,
Attribute
.
att_conf_id
==
base_class
.
att_conf_id
).
\
filter
(
and_
(
Attribute
.
att_conf_id
==
attr_id
,
base_class
.
data_time
>=
time_delta_db
,
\
base_class
.
data_time
<=
time_now_db
)).
order_by
(
base_class
.
data_time
).
all
()
#timestamp = [item[0].strftime("%Y-%m-%d %X:%f") for item in result]
#value = [item[1] for item in result]
return
result
def
get_attribute_value_by_interval
(
attribute_fqname
:
str
,
start_time
:
datetime
,
stop_time
:
datetime
):
...
...
@@ -132,6 +130,4 @@ def get_attribute_value_by_interval(attribute_fqname: str, start_time: datetime,
join
(
Attribute
,
Attribute
.
att_conf_id
==
base_class
.
att_conf_id
).
\
filter
(
and_
(
Attribute
.
att_conf_id
==
attr_id
,
base_class
.
data_time
>=
str
(
start_time
),
\
base_class
.
data_time
<=
str
(
stop_time
))).
order_by
(
base_class
.
data_time
).
all
()
#timestamp = [item[0].strftime("%Y-%m-%d %X:%f") for item in result]
#value = [item[1] for item in result]
return
result
This diff is collapsed.
Click to expand it.
devices/toolkit/archiver_base.py
+
309
−
14
View file @
f7d48cbe
#! /usr/bin/env python3
from
sqlalchemy.dialects.mysql.types
import
INTEGER
from
sqlalchemy.orm
import
declarative_base
from
sqlalchemy
import
Column
,
Integer
,
String
from
sqlalchemy.dialects.mysql
import
DOUBLE
,
TIMESTAMP
from
sqlalchemy.dialects.mysql
import
DOUBLE
,
TIMESTAMP
,
BLOB
,
FLOAT
,
BIGINT
from
sqlalchemy.sql.expression
import
table
#Declarative system used to define classes mapped to relational DB tables
Base
=
declarative_base
()
class
Attribute
(
Base
):
'''
"""
Class that represents a Tango Attribute mapped to table
'
att_conf
'
'''
"""
__tablename__
=
'
att_conf
'
__table_args__
=
{
'
extend_existing
'
:
True
}
...
...
@@ -31,9 +32,9 @@ class Attribute(Base):
%
(
self
.
att_name
,
self
.
att_conf_data_type_id
,
self
.
att_ttl
,
self
.
facility
,
self
.
domain
,
self
.
family
,
self
.
member
,
self
.
name
)
class
DataType
(
Base
):
'''
"""
Class that represents a Tango Data Type mapped to table
'
att_conf_data_type
'
'''
"""
__tablename__
=
'
att_conf_data_type
'
__table_args__
=
{
'
extend_existing
'
:
True
}
...
...
@@ -44,28 +45,322 @@ class DataType(Base):
return
"
<DataType(type=
'
%s
'
)>
"
\
%
(
self
.
data_type
)
class
Scalar_Double_RO
(
Base
):
'''
Class that represents a Tango Scalar Read-Only Value mapped to table
'
att_scalar_devdouble_ro
'
'''
__tablename__
=
'
att_scalar_devdouble_ro
'
__table_args__
=
{
'
extend_existing
'
:
True
}
# Primary key is not defined for this kind of tables, but SQLAlchemy requires a mandatory
class
Scalar
(
Base
):
"""
Abstract class that represents Super-class of Scalar mapper classes
"""
__abstract__
=
True
# Primary key is not defined for tables which store values, but SQLAlchemy requires a mandatory
# primary key definition. Anyway, this definition is on Python-side and does not compromise
# DBMS architecture
att_conf_id
=
Column
(
Integer
,
primary_key
=
True
)
data_time
=
Column
(
TIMESTAMP
)
recv_time
=
Column
(
TIMESTAMP
)
insert_time
=
Column
(
TIMESTAMP
,
primary_key
=
True
)
value_r
=
Column
(
DOUBLE
,
primary_key
=
True
)
quality
=
Column
(
Integer
)
att_error_desc_id
=
Column
(
Integer
)
class
Scalar_Boolean
(
Scalar
):
"""
Abstract class that represents Parent class of Scalar Boolean mapper classes
"""
__abstract__
=
True
value_r
=
Column
(
Integer
)
class
Scalar_Boolean_RO
(
Scalar_Boolean
):
"""
Class that represents a Tango Scalar Read-Only Value mapped to table
'
att_scalar_devdouble_ro
'
"""
__tablename__
=
'
att_scalar_devboolean_ro
'
__table_args__
=
{
'
extend_existing
'
:
True
}
def
__repr__
(
self
):
return
"
<Scalar_Boolean_RO(att_conf_id=
'
%s
'
,data_time=
'
%s
'
,recv_time=
'
%s
'
,insert_time=
'
%s
'
,value_r=
'
%s
'
,quality=
'
%s
'
,att_error_desc_id=
'
%s
'
)>
"
\
%
(
self
.
att_conf_id
,
self
.
data_time
,
self
.
recv_time
,
self
.
insert_time
,
self
.
value_r
,
self
.
quality
,
self
.
att_error_desc_id
)
class
Scalar_Boolean_RW
(
Scalar_Boolean
):
"""
Class that represents a Tango Scalar Read-Write Value mapped to table
'
att_scalar_devdouble_rw
'
"""
__tablename__
=
'
att_scalar_devboolean_rw
'
__table_args__
=
{
'
extend_existing
'
:
True
}
value_w
=
Column
(
Integer
)
def
__repr__
(
self
):
return
"
<Scalar_Boolean_RW(att_conf_id=
'
%s
'
,data_time=
'
%s
'
,recv_time=
'
%s
'
,insert_time=
'
%s
'
,value_r=
'
%s
'
,value_w=
'
%s
'
,quality=
'
%s
'
,att_error_desc_id=
'
%s
'
)>
"
\
%
(
self
.
att_conf_id
,
self
.
data_time
,
self
.
recv_time
,
self
.
insert_time
,
self
.
value_r
,
self
.
value_w
,
self
.
quality
,
self
.
att_error_desc_id
)
class
Scalar_Double
(
Scalar
):
"""
Abstract class that represents Parent class of Scalar Double mapper classes
"""
__abstract__
=
True
value_r
=
Column
(
DOUBLE
)
class
Scalar_Double_RO
(
Scalar_Double
):
"""
Class that represents a Tango Scalar Read-Only Value mapped to table
'
att_scalar_devdouble_ro
'
"""
__tablename__
=
'
att_scalar_devdouble_ro
'
__table_args__
=
{
'
extend_existing
'
:
True
}
def
__repr__
(
self
):
return
"
<Scalar_Double_RO(att_conf_id=
'
%s
'
,data_time=
'
%s
'
,recv_time=
'
%s
'
,insert_time=
'
%s
'
,value_r=
'
%s
'
,quality=
'
%s
'
,att_error_desc_id=
'
%s
'
)>
"
\
%
(
self
.
att_conf_id
,
self
.
data_time
,
self
.
recv_time
,
self
.
insert_time
,
self
.
value_r
,
self
.
quality
,
self
.
att_error_desc_id
)
class
Scalar_Double_RW
(
Scalar_Double
):
"""
Class that represents a Tango Scalar Read-Write Value mapped to table
'
att_scalar_devdouble_rw
'
"""
__tablename__
=
'
att_scalar_devdouble_rw
'
__table_args__
=
{
'
extend_existing
'
:
True
}
value_w
=
Column
(
DOUBLE
)
def
__repr__
(
self
):
return
"
<Scalar_Double_RW(att_conf_id=
'
%s
'
,data_time=
'
%s
'
,recv_time=
'
%s
'
,insert_time=
'
%s
'
,value_r=
'
%s
'
,value_w=
'
%s
'
,quality=
'
%s
'
,att_error_desc_id=
'
%s
'
)>
"
\
%
(
self
.
att_conf_id
,
self
.
data_time
,
self
.
recv_time
,
self
.
insert_time
,
self
.
value_r
,
self
.
value_w
,
self
.
quality
,
self
.
att_error_desc_id
)
class
Scalar_Encoded
(
Scalar
):
"""
Abstract class that represents Parent class of Scalar Encoded mapper classes
"""
__abstract__
=
True
value_r
=
Column
(
BLOB
)
class
Scalar_Encoded_RO
(
Scalar_Encoded
):
"""
Class that represents a Tango Scalar Read-Only Value mapped to table
'
att_scalar_devencoded_ro
'
"""
__tablename__
=
'
att_scalar_devencoded_ro
'
__table_args__
=
{
'
extend_existing
'
:
True
}
def
__repr__
(
self
):
return
"
<Scalar_Encoded_RO(att_conf_id=
'
%s
'
,data_time=
'
%s
'
,recv_time=
'
%s
'
,insert_time=
'
%s
'
,value_r=
'
%s
'
,quality=
'
%s
'
,att_error_desc_id=
'
%s
'
)>
"
\
%
(
self
.
att_conf_id
,
self
.
data_time
,
self
.
recv_time
,
self
.
insert_time
,
self
.
value_r
,
self
.
quality
,
self
.
att_error_desc_id
)
class
Scalar_Encoded_RW
(
Scalar_Encoded
):
"""
Class that represents a Tango Scalar Read-Write Value mapped to table
'
att_scalar_devencoded_rw
'
"""
__tablename__
=
'
att_scalar_devencoded_rw
'
__table_args__
=
{
'
extend_existing
'
:
True
}
value_w
=
Column
(
BLOB
)
def
__repr__
(
self
):
return
"
<Scalar_Encoded_RW(att_conf_id=
'
%s
'
,data_time=
'
%s
'
,recv_time=
'
%s
'
,insert_time=
'
%s
'
,value_r=
'
%s
'
,value_w=
'
%s
'
,quality=
'
%s
'
,att_error_desc_id=
'
%s
'
)>
"
\
%
(
self
.
att_conf_id
,
self
.
data_time
,
self
.
recv_time
,
self
.
insert_time
,
self
.
value_r
,
self
.
value_w
,
self
.
quality
,
self
.
att_error_desc_id
)
class
Scalar_Enum
(
Scalar
):
"""
Abstract class that represents Parent class of Scalar Enum mapper classes
"""
__abstract__
=
True
value_r
=
Column
(
Integer
)
class
Scalar_Enum_RO
(
Scalar_Enum
):
"""
Class that represents a Tango Scalar Read-Only Value mapped to table
'
att_scalar_devenum_ro
'
"""
__tablename__
=
'
att_scalar_devenum_ro
'
__table_args__
=
{
'
extend_existing
'
:
True
}
def
__repr__
(
self
):
return
"
<Scalar_Enum_RO(att_conf_id=
'
%s
'
,data_time=
'
%s
'
,recv_time=
'
%s
'
,insert_time=
'
%s
'
,value_r=
'
%s
'
,quality=
'
%s
'
,att_error_desc_id=
'
%s
'
)>
"
\
%
(
self
.
att_conf_id
,
self
.
data_time
,
self
.
recv_time
,
self
.
insert_time
,
self
.
value_r
,
self
.
quality
,
self
.
att_error_desc_id
)
class
Scalar_Enum_RW
(
Scalar_Enum
):
"""
Class that represents a Tango Scalar Read-Write Value mapped to table
'
att_scalar_devenum_rw
'
"""
__tablename__
=
'
att_scalar_devenum_rw
'
__table_args__
=
{
'
extend_existing
'
:
True
}
value_w
=
Column
(
Integer
)
def
__repr__
(
self
):
return
"
<Scalar_Enum_RW(att_conf_id=
'
%s
'
,data_time=
'
%s
'
,recv_time=
'
%s
'
,insert_time=
'
%s
'
,value_r=
'
%s
'
,value_w=
'
%s
'
,quality=
'
%s
'
,att_error_desc_id=
'
%s
'
)>
"
\
%
(
self
.
att_conf_id
,
self
.
data_time
,
self
.
recv_time
,
self
.
insert_time
,
self
.
value_r
,
self
.
value_w
,
self
.
quality
,
self
.
att_error_desc_id
)
class
Scalar_Float
(
Scalar
):
"""
Abstract class that represents Parent class of Scalar Float mapper classes
"""
__abstract__
=
True
value_r
=
Column
(
FLOAT
)
class
Scalar_Float_RO
(
Scalar_Float
):
"""
Class that represents a Tango Scalar Read-Only Value mapped to table
'
att_scalar_devfloat_ro
'
"""
__tablename__
=
'
att_scalar_devfloat_ro
'
__table_args__
=
{
'
extend_existing
'
:
True
}
def
__repr__
(
self
):
return
"
<Scalar_Float_RO(att_conf_id=
'
%s
'
,data_time=
'
%s
'
,recv_time=
'
%s
'
,insert_time=
'
%s
'
,value_r=
'
%s
'
,quality=
'
%s
'
,att_error_desc_id=
'
%s
'
)>
"
\
%
(
self
.
att_conf_id
,
self
.
data_time
,
self
.
recv_time
,
self
.
insert_time
,
self
.
value_r
,
self
.
quality
,
self
.
att_error_desc_id
)
class
Scalar_Float_RW
(
Scalar_Float
):
"""
Class that represents a Tango Scalar Read-Write Value mapped to table
'
att_scalar_devfloat_rw
'
"""
__tablename__
=
'
att_scalar_devfloat_rw
'
__table_args__
=
{
'
extend_existing
'
:
True
}
value_w
=
Column
(
FLOAT
)
def
__repr__
(
self
):
return
"
<Scalar_Float_RW(att_conf_id=
'
%s
'
,data_time=
'
%s
'
,recv_time=
'
%s
'
,insert_time=
'
%s
'
,value_r=
'
%s
'
,value_w=
'
%s
'
,quality=
'
%s
'
,att_error_desc_id=
'
%s
'
)>
"
\
%
(
self
.
att_conf_id
,
self
.
data_time
,
self
.
recv_time
,
self
.
insert_time
,
self
.
value_r
,
self
.
value_w
,
self
.
quality
,
self
.
att_error_desc_id
)
class
Scalar_Long64
(
Scalar
):
"""
Abstract class that represents Parent class of Scalar Long64 mapper classes
"""
__abstract__
=
True
value_r
=
Column
(
BIGINT
)
class
Scalar_Long64_RO
(
Scalar_Long64
):
"""
Class that represents a Tango Scalar Read-Only Value mapped to table
'
att_scalar_devlong64_ro
'
"""
__tablename__
=
'
att_scalar_devlong64_ro
'
__table_args__
=
{
'
extend_existing
'
:
True
}
def
__repr__
(
self
):
return
"
<Scalar_Long64_RO(att_conf_id=
'
%s
'
,data_time=
'
%s
'
,recv_time=
'
%s
'
,insert_time=
'
%s
'
,value_r=
'
%s
'
,quality=
'
%s
'
,att_error_desc_id=
'
%s
'
)>
"
\
%
(
self
.
att_conf_id
,
self
.
data_time
,
self
.
recv_time
,
self
.
insert_time
,
self
.
value_r
,
self
.
quality
,
self
.
att_error_desc_id
)
class
Scalar_Long64_RW
(
Scalar_Long64
):
"""
Class that represents a Tango Scalar Read-Write Value mapped to table
'
att_scalar_devlong64_rw
'
"""
__tablename__
=
'
att_scalar_devlong64_rw
'
__table_args__
=
{
'
extend_existing
'
:
True
}
value_w
=
Column
(
BIGINT
)
def
__repr__
(
self
):
return
"
<Scalar_Long64_RW(att_conf_id=
'
%s
'
,data_time=
'
%s
'
,recv_time=
'
%s
'
,insert_time=
'
%s
'
,value_r=
'
%s
'
,value_w=
'
%s
'
,quality=
'
%s
'
,att_error_desc_id=
'
%s
'
)>
"
\
%
(
self
.
att_conf_id
,
self
.
data_time
,
self
.
recv_time
,
self
.
insert_time
,
self
.
value_r
,
self
.
value_w
,
self
.
quality
,
self
.
att_error_desc_id
)
class
Scalar_Long
(
Scalar
):
"""
Abstract class that represents Parent class of Scalar Long mapper classes
"""
__abstract__
=
True
value_r
=
Column
(
INTEGER
)
class
Scalar_Long_RO
(
Scalar_Long
):
"""
Class that represents a Tango Scalar Read-Only Value mapped to table
'
att_scalar_devlong_ro
'
"""
__tablename__
=
'
att_scalar_devlong_ro
'
__table_args__
=
{
'
extend_existing
'
:
True
}
def
__repr__
(
self
):
return
"
<Scalar_Long_RO(att_conf_id=
'
%s
'
,data_time=
'
%s
'
,recv_time=
'
%s
'
,insert_time=
'
%s
'
,value_r=
'
%s
'
,quality=
'
%s
'
,att_error_desc_id=
'
%s
'
)>
"
\
%
(
self
.
att_conf_id
,
self
.
data_time
,
self
.
recv_time
,
self
.
insert_time
,
self
.
value_r
,
self
.
quality
,
self
.
att_error_desc_id
)
class
Scalar_Long_RW
(
Scalar_Long
):
"""
Class that represents a Tango Scalar Read-Write Value mapped to table
'
att_scalar_devlong_rw
'
"""
__tablename__
=
'
att_scalar_devlong_rw
'
__table_args__
=
{
'
extend_existing
'
:
True
}
value_w
=
Column
(
INTEGER
)
def
__repr__
(
self
):
return
"
<Scalar_Long_RW(att_conf_id=
'
%s
'
,data_time=
'
%s
'
,recv_time=
'
%s
'
,insert_time=
'
%s
'
,value_r=
'
%s
'
,value_w=
'
%s
'
,quality=
'
%s
'
,att_error_desc_id=
'
%s
'
)>
"
\
%
(
self
.
att_conf_id
,
self
.
data_time
,
self
.
recv_time
,
self
.
insert_time
,
self
.
value_r
,
self
.
value_w
,
self
.
quality
,
self
.
att_error_desc_id
)
class
Scalar_Short
(
Scalar
):
"""
Abstract class that represents Parent class of Scalar Short mapper classes
"""
__abstract__
=
True
value_r
=
Column
(
Integer
)
class
Scalar_Short_RO
(
Scalar_Short
):
"""
Class that represents a Tango Scalar Read-Only Value mapped to table
'
att_scalar_devshort_ro
'
"""
__tablename__
=
'
att_scalar_devshort_ro
'
__table_args__
=
{
'
extend_existing
'
:
True
}
def
__repr__
(
self
):
return
"
<Scalar_Short_RO(att_conf_id=
'
%s
'
,data_time=
'
%s
'
,recv_time=
'
%s
'
,insert_time=
'
%s
'
,value_r=
'
%s
'
,quality=
'
%s
'
,att_error_desc_id=
'
%s
'
)>
"
\
%
(
self
.
att_conf_id
,
self
.
data_time
,
self
.
recv_time
,
self
.
insert_time
,
self
.
value_r
,
self
.
quality
,
self
.
att_error_desc_id
)
class
Scalar_Short_RW
(
Scalar_Short
):
"""
Class that represents a Tango Scalar Read-Write Value mapped to table
'
att_scalar_devshort_rw
'
"""
__tablename__
=
'
att_scalar_devshort_rw
'
__table_args__
=
{
'
extend_existing
'
:
True
}
value_w
=
Column
(
Integer
)
def
__repr__
(
self
):
return
"
<Scalar_Short_RW(att_conf_id=
'
%s
'
,data_time=
'
%s
'
,recv_time=
'
%s
'
,insert_time=
'
%s
'
,value_r=
'
%s
'
,value_w=
'
%s
'
,quality=
'
%s
'
,att_error_desc_id=
'
%s
'
)>
"
\
%
(
self
.
att_conf_id
,
self
.
data_time
,
self
.
recv_time
,
self
.
insert_time
,
self
.
value_r
,
self
.
value_w
,
self
.
quality
,
self
.
att_error_desc_id
)
class
Scalar_State
(
Scalar
):
"""
Abstract class that represents Parent class of Scalar State mapper classes
"""
__abstract__
=
True
value_r
=
Column
(
Integer
)
class
Scalar_State_RO
(
Scalar_State
):
"""
Class that represents a Tango Scalar Read-Only Value mapped to table
'
att_scalar_devstate_ro
'
"""
__tablename__
=
'
att_scalar_devstate_ro
'
__table_args__
=
{
'
extend_existing
'
:
True
}
def
__repr__
(
self
):
return
"
<Scalar_State_RO(att_conf_id=
'
%s
'
,data_time=
'
%s
'
,recv_time=
'
%s
'
,insert_time=
'
%s
'
,value_r=
'
%s
'
,quality=
'
%s
'
,att_error_desc_id=
'
%s
'
)>
"
\
%
(
self
.
att_conf_id
,
self
.
data_time
,
self
.
recv_time
,
self
.
insert_time
,
self
.
value_r
,
self
.
quality
,
self
.
att_error_desc_id
)
class
Scalar_State_RW
(
Scalar_State
):
"""
Class that represents a Tango Scalar Read-Write Value mapped to table
'
att_scalar_devstate_rw
'
"""
__tablename__
=
'
att_scalar_devstate_rw
'
__table_args__
=
{
'
extend_existing
'
:
True
}
value_w
=
Column
(
Integer
)
def
__repr__
(
self
):
return
"
<Scalar_State_RW(att_conf_id=
'
%s
'
,data_time=
'
%s
'
,recv_time=
'
%s
'
,insert_time=
'
%s
'
,value_r=
'
%s
'
,value_w=
'
%s
'
,quality=
'
%s
'
,att_error_desc_id=
'
%s
'
)>
"
\
%
(
self
.
att_conf_id
,
self
.
data_time
,
self
.
recv_time
,
self
.
insert_time
,
self
.
value_r
,
self
.
value_w
,
self
.
quality
,
self
.
att_error_desc_id
)
class
Scalar_String
(
Scalar
):
"""
Abstract class that represents Parent class of Scalar String mapper classes
"""
__abstract__
=
True
value_r
=
Column
(
String
)
class
Scalar_String_RO
(
Scalar_String
):
"""
Class that represents a Tango Scalar Read-Only Value mapped to table
'
att_scalar_devstring_ro
'
"""
__tablename__
=
'
att_scalar_devstring_ro
'
__table_args__
=
{
'
extend_existing
'
:
True
}
def
__repr__
(
self
):
return
"
<Scalar_String_RO(att_conf_id=
'
%s
'
,data_time=
'
%s
'
,recv_time=
'
%s
'
,insert_time=
'
%s
'
,value_r=
'
%s
'
,quality=
'
%s
'
,att_error_desc_id=
'
%s
'
)>
"
\
%
(
self
.
att_conf_id
,
self
.
data_time
,
self
.
recv_time
,
self
.
insert_time
,
self
.
value_r
,
self
.
quality
,
self
.
att_error_desc_id
)
class
Scalar_String_RW
(
Scalar_String
):
"""
Class that represents a Tango Scalar Read-Write Value mapped to table
'
att_scalar_devstring_rw
'
"""
__tablename__
=
'
att_scalar_devstring_rw
'
__table_args__
=
{
'
extend_existing
'
:
True
}
value_w
=
Column
(
String
)
def
__repr__
(
self
):
return
"
<Scalar_String_RW(att_conf_id=
'
%s
'
,data_time=
'
%s
'
,recv_time=
'
%s
'
,insert_time=
'
%s
'
,value_r=
'
%s
'
,value_w=
'
%s
'
,quality=
'
%s
'
,att_error_desc_id=
'
%s
'
)>
"
\
%
(
self
.
att_conf_id
,
self
.
data_time
,
self
.
recv_time
,
self
.
insert_time
,
self
.
value_r
,
self
.
value_w
,
self
.
quality
,
self
.
att_error_desc_id
)
def
get_class_by_tablename
(
tablename
:
str
):
"""
Returns class reference mapped to a table.
...
...
This diff is collapsed.
Click to expand it.
jupyter-notebooks/archiving_test_v2.ipynb
+
145
−
43
View file @
f7d48cbe
...
...
@@ -9,17 +9,28 @@
"source": [
"import sys\n",
"sys.path.append('/hosthome/tango/devices')\n",
"from
util
.archiver import *\n",
"from
util
.archiver_base import *\n",
"from
toolkit
.archiver import *\n",
"from
toolkit
.archiver_base import *\n",
"import mysql.connector"
]
},
{
"cell_type": "code",
"execution_count":
null
,
"execution_count":
2
,
"id": "57834b5e",
"metadata": {},
"outputs": [],
"outputs": [
{
"data": {
"text/plain": [
"['rnd1', 'rnd2', 'rnd3', 'rnd4', 'rnd5', 'rnd6', 'rnd7', 'rnd8', 'rnd9', 'rnd10', 'rnd11', 'rnd12', 'rnd13', 'rnd14', 'rnd15', 'rnd16', 'rnd17', 'rnd18', 'rnd19', 'rnd20', 'State', 'Status']"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dev_rand = DeviceProxy(\"LTS/RandomData/1\")\n",
"dev_rand.get_attribute_list()"
...
...
@@ -27,7 +38,7 @@
},
{
"cell_type": "code",
"execution_count":
null
,
"execution_count":
3
,
"id": "6816f78f",
"metadata": {},
"outputs": [],
...
...
@@ -37,50 +48,62 @@
},
{
"cell_type": "code",
"execution_count":
null
,
"execution_count":
4
,
"id": "7bda559b",
"metadata": {},
"outputs": [],
"outputs": [
{
"data": {
"text/plain": [
"[<Attribute(fullname='tango://databaseds:10000/lts/randomdata/1/rnd1',data_type ='37',ttl='0',facility ='tango://databaseds:10000',domain ='lts',family ='randomdata',member ='1',name ='rnd1')>,\n",
" <Attribute(fullname='tango://databaseds:10000/lts/randomdata/1/rnd3',data_type ='37',ttl='0',facility ='tango://databaseds:10000',domain ='lts',family ='randomdata',member ='1',name ='rnd3')>]"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"get_all_archived_attributes()"
]
},
{
"cell_type": "code",
"execution_count":
null
,
"execution_count":
5
,
"id": "f0ef38a4",
"metadata": {},
"outputs": [],
"source": [
"add_attribute_to_archiver('lts/randomdata/1/rnd7',3000,1000)"
"attr_fullname = 'lts/randomdata/1/rnd5'\n",
"add_attribute_to_archiver(attr_fullname,1000,1000)"
]
},
{
"cell_type": "code",
"execution_count":
null
,
"execution_count":
6
,
"id": "7d0746e7",
"metadata": {},
"outputs": [],
"source": [
"remove_attribute_from_archiver(
'lts/randomdata/1/rnd7'
)"
"remove_attribute_from_archiver(
attr_fullname
)"
]
},
{
"cell_type": "code",
"execution_count":
2
,
"execution_count":
7
,
"id": "129a75c6",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[<Attribute(fullname='tango://databaseds:10000/lts/randomdata/1/rnd
2
',data_type ='37',ttl='0',facility ='tango://databaseds:10000',domain ='lts',family ='randomdata',member ='1',name ='rnd
2
')>,\n",
"[<Attribute(fullname='tango://databaseds:10000/lts/randomdata/1/rnd
1
',data_type ='37',ttl='0',facility ='tango://databaseds:10000',domain ='lts',family ='randomdata',member ='1',name ='rnd
1
')>,\n",
" <Attribute(fullname='tango://databaseds:10000/lts/randomdata/1/rnd3',data_type ='37',ttl='0',facility ='tango://databaseds:10000',domain ='lts',family ='randomdata',member ='1',name ='rnd3')>,\n",
" <Attribute(fullname='tango://databaseds:10000/lts/randomdata/1/rnd15',data_type ='37',ttl='0',facility ='tango://databaseds:10000',domain ='lts',family ='randomdata',member ='1',name ='rnd15')>,\n",
" <Attribute(fullname='tango://databaseds:10000/lts/randomdata/1/rnd7',data_type ='37',ttl='0',facility ='tango://databaseds:10000',domain ='lts',family ='randomdata',member ='1',name ='rnd7')>]"
" <Attribute(fullname='tango://databaseds:10000/lts/randomdata/1/rnd5',data_type ='37',ttl='0',facility ='tango://databaseds:10000',domain ='lts',family ='randomdata',member ='1',name ='rnd5')>]"
]
},
"execution_count":
2
,
"execution_count":
7
,
"metadata": {},
"output_type": "execute_result"
}
...
...
@@ -91,29 +114,29 @@
},
{
"cell_type": "code",
"execution_count":
3
,
"execution_count":
8
,
"id": "5f9865ee",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"
4
"
"
3
"
]
},
"execution_count":
3
,
"execution_count":
8
,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"main_att = 'lts/randomdata/1/rnd
7
'\n",
"main_att = 'lts/randomdata/1/rnd
5
'\n",
"get_attribute_id(main_att)"
]
},
{
"cell_type": "code",
"execution_count":
4
,
"execution_count":
9
,
"id": "2a3707a3",
"metadata": {},
"outputs": [
...
...
@@ -123,7 +146,7 @@
"'scalar_devdouble_ro'"
]
},
"execution_count":
4
,
"execution_count":
9
,
"metadata": {},
"output_type": "execute_result"
}
...
...
@@ -134,29 +157,27 @@
},
{
"cell_type": "code",
"execution_count":
5
,
"execution_count":
10
,
"id": "18100623",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[<Scalar_Double_RO(att_conf_id='4',data_time='2021-06-23 15:00:21.892781',recv_time='2021-06-23 15:00:23.040862',insert_time='2021-06-23 15:00:23.042065',value_r='0.9263038657',quality='2',att_error_desc_id='None')>,\n",
" <Scalar_Double_RO(att_conf_id='4',data_time='2021-06-23 15:00:24.909897',recv_time='2021-06-23 15:00:24.911329',insert_time='2021-06-23 15:00:24.912696',value_r='0.6869173892',quality='2',att_error_desc_id='None')>,\n",
" <Scalar_Double_RO(att_conf_id='4',data_time='2021-06-23 15:00:27.909636',recv_time='2021-06-23 15:00:27.910767',insert_time='2021-06-23 15:00:27.912330',value_r='0.1070759253',quality='2',att_error_desc_id='None')>,\n",
" <Scalar_Double_RO(att_conf_id='4',data_time='2021-06-23 15:00:30.909940',recv_time='2021-06-23 15:00:30.911529',insert_time='2021-06-23 15:00:30.913542',value_r='0.2699634793',quality='2',att_error_desc_id='None')>,\n",
" <Scalar_Double_RO(att_conf_id='4',data_time='2021-06-23 15:00:33.910365',recv_time='2021-06-23 15:00:33.910897',insert_time='2021-06-23 15:00:33.911735',value_r='0.8323236082',quality='2',att_error_desc_id='None')>,\n",
" <Scalar_Double_RO(att_conf_id='4',data_time='2021-06-23 15:00:36.910232',recv_time='2021-06-23 15:00:36.911389',insert_time='2021-06-23 15:00:36.912912',value_r='0.7979368397',quality='2',att_error_desc_id='None')>,\n",
" <Scalar_Double_RO(att_conf_id='4',data_time='2021-06-23 15:00:39.909182',recv_time='2021-06-23 15:00:39.909785',insert_time='2021-06-23 15:00:39.910372',value_r='0.2178505902',quality='2',att_error_desc_id='None')>,\n",
" <Scalar_Double_RO(att_conf_id='4',data_time='2021-06-23 15:00:42.909868',recv_time='2021-06-23 15:00:42.911390',insert_time='2021-06-23 15:00:42.913124',value_r='0.6949464171',quality='2',att_error_desc_id='None')>,\n",
" <Scalar_Double_RO(att_conf_id='4',data_time='2021-06-23 15:00:45.909946',recv_time='2021-06-23 15:00:45.911036',insert_time='2021-06-23 15:00:45.912787',value_r='0.1093199257',quality='2',att_error_desc_id='None')>,\n",
" <Scalar_Double_RO(att_conf_id='4',data_time='2021-06-23 15:00:48.909615',recv_time='2021-06-23 15:00:48.910722',insert_time='2021-06-23 15:00:48.912259',value_r='0.9768430390',quality='2',att_error_desc_id='None')>,\n",
" <Scalar_Double_RO(att_conf_id='4',data_time='2021-06-23 15:00:51.909200',recv_time='2021-06-23 15:00:51.910290',insert_time='2021-06-23 15:00:51.911793',value_r='0.8888621550',quality='2',att_error_desc_id='None')>,\n",
" <Scalar_Double_RO(att_conf_id='4',data_time='2021-06-23 15:00:54.909296',recv_time='2021-06-23 15:00:54.910679',insert_time='2021-06-23 15:00:54.912332',value_r='0.3799629383',quality='2',att_error_desc_id='None')>,\n",
" <Scalar_Double_RO(att_conf_id='4',data_time='2021-06-23 15:00:57.909804',recv_time='2021-06-23 15:00:57.910850',insert_time='2021-06-23 15:00:57.912311',value_r='0.7681945847',quality='2',att_error_desc_id='None')>]"
"[<Scalar_Double_RO(att_conf_id='3',data_time='2021-06-25 15:24:07.119788',recv_time='2021-06-25 15:24:07.930917',insert_time='2021-06-25 15:24:07.932652',value_r='0.2033680434',quality='2',att_error_desc_id='None')>,\n",
" <Scalar_Double_RO(att_conf_id='3',data_time='2021-06-25 15:24:08.120465',recv_time='2021-06-25 15:24:08.124548',insert_time='2021-06-25 15:24:08.127058',value_r='0.9330212368',quality='2',att_error_desc_id='None')>,\n",
" <Scalar_Double_RO(att_conf_id='3',data_time='2021-06-25 15:24:09.120343',recv_time='2021-06-25 15:24:09.123946',insert_time='2021-06-25 15:24:09.126367',value_r='0.1619766261',quality='2',att_error_desc_id='None')>,\n",
" <Scalar_Double_RO(att_conf_id='3',data_time='2021-06-25 15:24:10.120398',recv_time='2021-06-25 15:24:10.123090',insert_time='2021-06-25 15:24:10.125112',value_r='0.1600708165',quality='2',att_error_desc_id='None')>,\n",
" <Scalar_Double_RO(att_conf_id='3',data_time='2021-06-25 15:24:11.120518',recv_time='2021-06-25 15:24:11.123866',insert_time='2021-06-25 15:24:11.125772',value_r='0.1953627874',quality='2',att_error_desc_id='None')>,\n",
" <Scalar_Double_RO(att_conf_id='3',data_time='2021-06-25 15:24:12.120626',recv_time='2021-06-25 15:24:12.123934',insert_time='2021-06-25 15:24:12.126119',value_r='0.4233485985',quality='2',att_error_desc_id='None')>,\n",
" <Scalar_Double_RO(att_conf_id='3',data_time='2021-06-25 15:24:13.120682',recv_time='2021-06-25 15:24:13.123542',insert_time='2021-06-25 15:24:13.125435',value_r='0.1744663070',quality='2',att_error_desc_id='None')>,\n",
" <Scalar_Double_RO(att_conf_id='3',data_time='2021-06-25 15:24:14.120714',recv_time='2021-06-25 15:24:14.123980',insert_time='2021-06-25 15:24:14.126306',value_r='0.9820536486',quality='2',att_error_desc_id='None')>,\n",
" <Scalar_Double_RO(att_conf_id='3',data_time='2021-06-25 15:24:15.120239',recv_time='2021-06-25 15:24:15.122162',insert_time='2021-06-25 15:24:15.123428',value_r='0.9547788992',quality='2',att_error_desc_id='None')>,\n",
" <Scalar_Double_RO(att_conf_id='3',data_time='2021-06-25 15:24:16.120990',recv_time='2021-06-25 15:24:16.124006',insert_time='2021-06-25 15:24:16.126385',value_r='0.1627633385',quality='2',att_error_desc_id='None')>,\n",
" <Scalar_Double_RO(att_conf_id='3',data_time='2021-06-25 15:24:17.120261',recv_time='2021-06-25 15:24:17.124313',insert_time='2021-06-25 15:24:17.126494',value_r='0.2554102953',quality='2',att_error_desc_id='None')>]"
]
},
"execution_count":
5
,
"execution_count":
10
,
"metadata": {},
"output_type": "execute_result"
}
...
...
@@ -167,31 +188,112 @@
},
{
"cell_type": "code",
"execution_count":
6
,
"execution_count":
11
,
"id": "ab476d57",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[<Scalar_Double_RO(att_conf_id='3',data_time='2021-06-21 14:50:06.179562',recv_time='2021-06-21 14:50:07.180444',insert_time='2021-06-21 14:50:07.204869',value_r='0.1400088842',quality='2',att_error_desc_id='None')>,\n",
" <Scalar_Double_RO(att_conf_id='3',data_time='2021-06-21 14:50:10.213110',recv_time='2021-06-21 14:50:10.214549',insert_time='2021-06-21 14:50:10.216117',value_r='0.6627579896',quality='2',att_error_desc_id='None')>]"
"[]"
]
},
"execution_count":
6
,
"execution_count":
11
,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"get_attribute_value_by_interval(
'lts/randomdata/1/rnd15'
, '2021-06-21 13:20:00', '2021-06-23 15:21:00')"
"get_attribute_value_by_interval(
main_att
, '2021-06-21 13:20:00', '2021-06-23 15:21:00')"
]
},
{
"cell_type": "code",
"execution_count":
null
,
"execution_count":
12
,
"id": "21c9b91b",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Decimal('0.2033680434')"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"rows = get_attribute_value_by_hours(main_att,2)\n",
"a = rows[0]\n",
"a.value_r"
]
},
{
"cell_type": "code",
"execution_count": 18,
"id": "762ea947",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(toolkit.archiver_base.Scalar_Double,)"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a.__class__.__bases__"
]
},
{
"cell_type": "code",
"execution_count": 22,
"id": "56b31348",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[0.2033680434, 0.9330212368, 0.1619766261, 0.1600708165, 0.1953627874, 0.4233485985, 0.174466307, 0.9820536486, 0.9547788992, 0.1627633385, 0.2554102953]\n"
]
}
],
"source": [
"values = [float(item.value_r) for item in rows]\n",
"print(values)"
]
},
{
"cell_type": "code",
"execution_count": 24,
"id": "a26aa8f0",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"['2021-06-25 15:24:07:930917', '2021-06-25 15:24:08:124548', '2021-06-25 15:24:09:123946', '2021-06-25 15:24:10:123090', '2021-06-25 15:24:11:123866', '2021-06-25 15:24:12:123934', '2021-06-25 15:24:13:123542', '2021-06-25 15:24:14:123980', '2021-06-25 15:24:15:122162', '2021-06-25 15:24:16:124006', '2021-06-25 15:24:17:124313']\n"
]
}
],
"source": [
"timestamps = [item.recv_time.strftime(\"%Y-%m-%d %X:%f\") for item in rows]\n",
"print(timestamps)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "c2ad3416",
"metadata": {},
"outputs": [],
"source": []
}
...
...
%% Cell type:code id:c7dd05cd tags:
```
python
import
sys
sys
.
path
.
append
(
'
/hosthome/tango/devices
'
)
from
util
.archiver
import
*
from
util
.archiver_base
import
*
from
toolkit
.archiver
import
*
from
toolkit
.archiver_base
import
*
import
mysql.connector
```
%% Cell type:code id:57834b5e tags:
```
python
dev_rand
=
DeviceProxy
(
"
LTS/RandomData/1
"
)
dev_rand
.
get_attribute_list
()
```
%% Output
['rnd1', 'rnd2', 'rnd3', 'rnd4', 'rnd5', 'rnd6', 'rnd7', 'rnd8', 'rnd9', 'rnd10', 'rnd11', 'rnd12', 'rnd13', 'rnd14', 'rnd15', 'rnd16', 'rnd17', 'rnd18', 'rnd19', 'rnd20', 'State', 'Status']
%% Cell type:code id:6816f78f tags:
```
python
cm
=
DeviceProxy
(
"
archiving/hdbpp/confmanager01
"
)
```
%% Cell type:code id:7bda559b tags:
```
python
get_all_archived_attributes
()
```
%% Output
[<Attribute(fullname='tango://databaseds:10000/lts/randomdata/1/rnd1',data_type ='37',ttl='0',facility ='tango://databaseds:10000',domain ='lts',family ='randomdata',member ='1',name ='rnd1')>,
<Attribute(fullname='tango://databaseds:10000/lts/randomdata/1/rnd3',data_type ='37',ttl='0',facility ='tango://databaseds:10000',domain ='lts',family ='randomdata',member ='1',name ='rnd3')>]
%% Cell type:code id:f0ef38a4 tags:
```
python
add_attribute_to_archiver
(
'
lts/randomdata/1/rnd7
'
,
3000
,
1000
)
attr_fullname
=
'
lts/randomdata/1/rnd5
'
add_attribute_to_archiver
(
attr_fullname
,
1000
,
1000
)
```
%% Cell type:code id:7d0746e7 tags:
```
python
remove_attribute_from_archiver
(
'
lts/randomdata/1/rnd7
'
)
remove_attribute_from_archiver
(
attr_fullname
)
```
%% Cell type:code id:129a75c6 tags:
```
python
get_all_archived_attributes
()
```
%% Output
[<Attribute(fullname='tango://databaseds:10000/lts/randomdata/1/rnd
2
',data_type ='37',ttl='0',facility ='tango://databaseds:10000',domain ='lts',family ='randomdata',member ='1',name ='rnd
2
')>,
[<Attribute(fullname='tango://databaseds:10000/lts/randomdata/1/rnd
1
',data_type ='37',ttl='0',facility ='tango://databaseds:10000',domain ='lts',family ='randomdata',member ='1',name ='rnd
1
')>,
<Attribute(fullname='tango://databaseds:10000/lts/randomdata/1/rnd3',data_type ='37',ttl='0',facility ='tango://databaseds:10000',domain ='lts',family ='randomdata',member ='1',name ='rnd3')>,
<Attribute(fullname='tango://databaseds:10000/lts/randomdata/1/rnd15',data_type ='37',ttl='0',facility ='tango://databaseds:10000',domain ='lts',family ='randomdata',member ='1',name ='rnd15')>,
<Attribute(fullname='tango://databaseds:10000/lts/randomdata/1/rnd7',data_type ='37',ttl='0',facility ='tango://databaseds:10000',domain ='lts',family ='randomdata',member ='1',name ='rnd7')>]
<Attribute(fullname='tango://databaseds:10000/lts/randomdata/1/rnd5',data_type ='37',ttl='0',facility ='tango://databaseds:10000',domain ='lts',family ='randomdata',member ='1',name ='rnd5')>]
%% Cell type:code id:5f9865ee tags:
```
python
main_att
=
'
lts/randomdata/1/rnd
7
'
main_att
=
'
lts/randomdata/1/rnd
5
'
get_attribute_id
(
main_att
)
```
%% Output
4
3
%% Cell type:code id:2a3707a3 tags:
```
python
get_attribute_datatype
(
main_att
)
```
%% Output
'scalar_devdouble_ro'
%% Cell type:code id:18100623 tags:
```
python
get_attribute_value_by_hours
(
main_att
,
24
)
```
%% Output
[<Scalar_Double_RO(att_conf_id='4',data_time='2021-06-23 15:00:21.892781',recv_time='2021-06-23 15:00:23.040862',insert_time='2021-06-23 15:00:23.042065',value_r='0.9263038657',quality='2',att_error_desc_id='None')>,
<Scalar_Double_RO(att_conf_id='4',data_time='2021-06-23 15:00:24.909897',recv_time='2021-06-23 15:00:24.911329',insert_time='2021-06-23 15:00:24.912696',value_r='0.6869173892',quality='2',att_error_desc_id='None')>,
<Scalar_Double_RO(att_conf_id='4',data_time='2021-06-23 15:00:27.909636',recv_time='2021-06-23 15:00:27.910767',insert_time='2021-06-23 15:00:27.912330',value_r='0.1070759253',quality='2',att_error_desc_id='None')>,
<Scalar_Double_RO(att_conf_id='4',data_time='2021-06-23 15:00:30.909940',recv_time='2021-06-23 15:00:30.911529',insert_time='2021-06-23 15:00:30.913542',value_r='0.2699634793',quality='2',att_error_desc_id='None')>,
<Scalar_Double_RO(att_conf_id='4',data_time='2021-06-23 15:00:33.910365',recv_time='2021-06-23 15:00:33.910897',insert_time='2021-06-23 15:00:33.911735',value_r='0.8323236082',quality='2',att_error_desc_id='None')>,
<Scalar_Double_RO(att_conf_id='4',data_time='2021-06-23 15:00:36.910232',recv_time='2021-06-23 15:00:36.911389',insert_time='2021-06-23 15:00:36.912912',value_r='0.7979368397',quality='2',att_error_desc_id='None')>,
<Scalar_Double_RO(att_conf_id='4',data_time='2021-06-23 15:00:39.909182',recv_time='2021-06-23 15:00:39.909785',insert_time='2021-06-23 15:00:39.910372',value_r='0.2178505902',quality='2',att_error_desc_id='None')>,
<Scalar_Double_RO(att_conf_id='4',data_time='2021-06-23 15:00:42.909868',recv_time='2021-06-23 15:00:42.911390',insert_time='2021-06-23 15:00:42.913124',value_r='0.6949464171',quality='2',att_error_desc_id='None')>,
<Scalar_Double_RO(att_conf_id='4',data_time='2021-06-23 15:00:45.909946',recv_time='2021-06-23 15:00:45.911036',insert_time='2021-06-23 15:00:45.912787',value_r='0.1093199257',quality='2',att_error_desc_id='None')>,
<Scalar_Double_RO(att_conf_id='4',data_time='2021-06-23 15:00:48.909615',recv_time='2021-06-23 15:00:48.910722',insert_time='2021-06-23 15:00:48.912259',value_r='0.9768430390',quality='2',att_error_desc_id='None')>,
<Scalar_Double_RO(att_conf_id='4',data_time='2021-06-23 15:00:51.909200',recv_time='2021-06-23 15:00:51.910290',insert_time='2021-06-23 15:00:51.911793',value_r='0.8888621550',quality='2',att_error_desc_id='None')>,
<Scalar_Double_RO(att_conf_id='4',data_time='2021-06-23 15:00:54.909296',recv_time='2021-06-23 15:00:54.910679',insert_time='2021-06-23 15:00:54.912332',value_r='0.3799629383',quality='2',att_error_desc_id='None')>,
<Scalar_Double_RO(att_conf_id='4',data_time='2021-06-23 15:00:57.909804',recv_time='2021-06-23 15:00:57.910850',insert_time='2021-06-23 15:00:57.912311',value_r='0.7681945847',quality='2',att_error_desc_id='None')>]
[<Scalar_Double_RO(att_conf_id='3',data_time='2021-06-25 15:24:07.119788',recv_time='2021-06-25 15:24:07.930917',insert_time='2021-06-25 15:24:07.932652',value_r='0.2033680434',quality='2',att_error_desc_id='None')>,
<Scalar_Double_RO(att_conf_id='3',data_time='2021-06-25 15:24:08.120465',recv_time='2021-06-25 15:24:08.124548',insert_time='2021-06-25 15:24:08.127058',value_r='0.9330212368',quality='2',att_error_desc_id='None')>,
<Scalar_Double_RO(att_conf_id='3',data_time='2021-06-25 15:24:09.120343',recv_time='2021-06-25 15:24:09.123946',insert_time='2021-06-25 15:24:09.126367',value_r='0.1619766261',quality='2',att_error_desc_id='None')>,
<Scalar_Double_RO(att_conf_id='3',data_time='2021-06-25 15:24:10.120398',recv_time='2021-06-25 15:24:10.123090',insert_time='2021-06-25 15:24:10.125112',value_r='0.1600708165',quality='2',att_error_desc_id='None')>,
<Scalar_Double_RO(att_conf_id='3',data_time='2021-06-25 15:24:11.120518',recv_time='2021-06-25 15:24:11.123866',insert_time='2021-06-25 15:24:11.125772',value_r='0.1953627874',quality='2',att_error_desc_id='None')>,
<Scalar_Double_RO(att_conf_id='3',data_time='2021-06-25 15:24:12.120626',recv_time='2021-06-25 15:24:12.123934',insert_time='2021-06-25 15:24:12.126119',value_r='0.4233485985',quality='2',att_error_desc_id='None')>,
<Scalar_Double_RO(att_conf_id='3',data_time='2021-06-25 15:24:13.120682',recv_time='2021-06-25 15:24:13.123542',insert_time='2021-06-25 15:24:13.125435',value_r='0.1744663070',quality='2',att_error_desc_id='None')>,
<Scalar_Double_RO(att_conf_id='3',data_time='2021-06-25 15:24:14.120714',recv_time='2021-06-25 15:24:14.123980',insert_time='2021-06-25 15:24:14.126306',value_r='0.9820536486',quality='2',att_error_desc_id='None')>,
<Scalar_Double_RO(att_conf_id='3',data_time='2021-06-25 15:24:15.120239',recv_time='2021-06-25 15:24:15.122162',insert_time='2021-06-25 15:24:15.123428',value_r='0.9547788992',quality='2',att_error_desc_id='None')>,
<Scalar_Double_RO(att_conf_id='3',data_time='2021-06-25 15:24:16.120990',recv_time='2021-06-25 15:24:16.124006',insert_time='2021-06-25 15:24:16.126385',value_r='0.1627633385',quality='2',att_error_desc_id='None')>,
<Scalar_Double_RO(att_conf_id='3',data_time='2021-06-25 15:24:17.120261',recv_time='2021-06-25 15:24:17.124313',insert_time='2021-06-25 15:24:17.126494',value_r='0.2554102953',quality='2',att_error_desc_id='None')>]
%% Cell type:code id:ab476d57 tags:
```
python
get_attribute_value_by_interval
(
'
lts/randomdata/1/rnd15
'
,
'
2021-06-21 13:20:00
'
,
'
2021-06-23 15:21:00
'
)
get_attribute_value_by_interval
(
main_att
,
'
2021-06-21 13:20:00
'
,
'
2021-06-23 15:21:00
'
)
```
%% Output
[<Scalar_Double_RO(att_conf_id='3',data_time='2021-06-21 14:50:06.179562',recv_time='2021-06-21 14:50:07.180444',insert_time='2021-06-21 14:50:07.204869',value_r='0.1400088842',quality='2',att_error_desc_id='None')>,
<Scalar_Double_RO(att_conf_id='3',data_time='2021-06-21 14:50:10.213110',recv_time='2021-06-21 14:50:10.214549',insert_time='2021-06-21 14:50:10.216117',value_r='0.6627579896',quality='2',att_error_desc_id='None')>]
[]
%% Cell type:code id:21c9b91b tags:
```
python
rows
=
get_attribute_value_by_hours
(
main_att
,
2
)
a
=
rows
[
0
]
a
.
value_r
```
%% Output
Decimal('0.2033680434')
%% Cell type:code id:762ea947 tags:
```
python
a
.
__class__
.
__bases__
```
%% Output
(toolkit.archiver_base.Scalar_Double,)
%% Cell type:code id:56b31348 tags:
```
python
values
=
[
float
(
item
.
value_r
)
for
item
in
rows
]
print
(
values
)
```
%% Output
[0.2033680434, 0.9330212368, 0.1619766261, 0.1600708165, 0.1953627874, 0.4233485985, 0.174466307, 0.9820536486, 0.9547788992, 0.1627633385, 0.2554102953]
%% Cell type:code id:a26aa8f0 tags:
```
python
timestamps
=
[
item
.
recv_time
.
strftime
(
"
%Y-%m-%d %X:%f
"
)
for
item
in
rows
]
print
(
timestamps
)
```
%% Output
['2021-06-25 15:24:07:930917', '2021-06-25 15:24:08:124548', '2021-06-25 15:24:09:123946', '2021-06-25 15:24:10:123090', '2021-06-25 15:24:11:123866', '2021-06-25 15:24:12:123934', '2021-06-25 15:24:13:123542', '2021-06-25 15:24:14:123980', '2021-06-25 15:24:15:122162', '2021-06-25 15:24:16:124006', '2021-06-25 15:24:17:124313']
%% Cell type:code id:c2ad3416 tags:
```
python
```
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment