grepros 1.2.2
grep for ROS bag files and live topics
Loading...
Searching...
No Matches
SqliteSink Class Reference

Writes messages to an SQLite database. More...

Inheritance diagram for SqliteSink:
Inheritance graph

Public Member Functions

 __init__ (self, args=None, **kwargs)
 
 emit (self, topic, msg, stamp=None, match=None, index=None)
 Writes message to database.
 
 validate (self)
 Returns whether "commit-interval" and "nesting" in args.write_options have valid value, if any, and file is writable; parses "message-yaml" and "overwrite" from args.write_options.
 
- Public Member Functions inherited from BaseDataSink
 __init__ (self, args=None, **kwargs)
 
 close (self)
 Closes database connection, if any, emits metainfo.
 
 close_output (self)
 Closes database connection, if any, executing any pending statements.
 
 emit (self, topic, msg, stamp=None, match=None, index=None)
 Writes message to database.
 
 validate (self)
 Returns whether args.write_options has valid values, if any.
 
- Public Member Functions inherited from Sink
 __init__ (self, args=None, **kwargs)
 
 __enter__ (self)
 Context manager entry.
 
 __exit__ (self, exc_type, exc_value, traceback)
 Context manager exit, closes sink.
 
 autodetect (cls, target)
 Returns true if target is recognizable as output for this sink class.
 
 bind (self, source)
 Attaches source to sink.
 
 close (self)
 Shuts down output, closing any files or connections.
 
 configure (self, args=None, **kwargs)
 Updates sink configuration.
 
 emit (self, topic, msg, stamp=None, match=None, index=None)
 Outputs ROS message.
 
 emit_meta (self)
 Outputs source metainfo like bag header as debug stream, if not already emitted.
 
 flush (self)
 Writes out any pending data to disk.
 
 is_highlighting (self)
 Returns whether this sink requires highlighted matches.
 
 thread_excepthook (self, text, exc)
 Handles exception, used by background threads.
 
 validate (self)
 Returns whether sink prerequisites are met (like ROS environment set if LiveSink).
 
 __init__ (self, args=None, **kwargs)
 
 close (self)
 Clears data structures.
 
 validate (self)
 Returns whether arguments are valid.
 
- Public Member Functions inherited from RolloverSinkMixin
 __init__ (self, args=None, **kwargs)
 
 close_output (self)
 Closes output file, if any.
 
 ensure_rollover (self, topic, msg, stamp)
 Closes current output file and prepares new filename if rollover limit reached.
 
 format_output_meta (self)
 Returns output file metainfo string, with names and sizes and message/topic counts.
 
 get_write_options (cls, label)
 Returns command-line help texts for rollover options, as [(name, help)].
 
 make_filename (self)
 Returns new filename for output, accounting for rollover template and overwrite.
 
 validate (self)
 Returns whether write options are valid, emits error if not, else populates options.
 

Public Attributes

 ENGINE
 
 filename
 
 valid
 
- Public Attributes inherited from BaseDataSink
 close
 
 COMMIT_INTERVAL
 
 db
 Database connection.
 
- Public Attributes inherited from Sink
 args
 
 source
 inputs.Source instance bound to this sink
 
 valid
 Result of validate()
 
- Public Attributes inherited from SqlMixin
 DIALECTS
 
- Public Attributes inherited from RolloverSinkMixin
 filename
 Current output file path.
 

Static Public Attributes

 DEFAULT_ARGS = dict(META=False, WRITE_OPTIONS={}, VERBOSE=False)
 Constructor argument defaults.
 
str ENGINE = "SQLite"
 Database engine name.
 
tuple FILE_EXTENSIONS = (".sqlite", ".sqlite3")
 Auto-detection file extensions.
 
int MAX_INT = 2**63 - 1
 Maximum integer size supported in SQLite, higher values inserted as string.
 
- Static Public Attributes inherited from BaseDataSink
int COMMIT_INTERVAL = 1000
 Number of emits between commits; 0 is autocommit.
 
 DEFAULT_ARGS = dict(META=False, WRITE_OPTIONS={}, VERBOSE=False)
 Constructor argument defaults.
 
 ENGINE = None
 Database engine name, overridden in subclasses.
 
list MESSAGE_TYPE_BASECOLS
 Default columns for pkg/MsgType tables.
 
list MESSAGE_TYPE_NESTCOLS
 Additional default columns for pkg/MsgType tables with nesting output.
 
list MESSAGE_TYPE_TOPICCOLS
 Default topic-related columns for pkg/MsgType tables.
 
- Static Public Attributes inherited from Sink
 DEFAULT_ARGS = dict(META=False)
 Constructor argument defaults.
 
tuple FILE_EXTENSIONS = ()
 Auto-detection file extensions for subclasses, as (".ext", )
 
- Static Public Attributes inherited from SqlMixin
 DEFAULT_ARGS = dict(WRITE_OPTIONS={})
 Constructor argument defaults.
 
str DEFAULT_DIALECT = "sqlite"
 Default SQL dialect used if dialect not specified.
 
dict DIALECTS
 Supported SQL dialects and options.
 
list KEYWORDS
 Words that need quoting if in name context, like table name.
 
- Static Public Attributes inherited from RolloverSinkMixin
 DEFAULT_ARGS = dict(WRITE=None, WRITE_OPTIONS={}, VERBOSE=False)
 Constructor argument defaults.
 
str FILE_META_TEMPLATE = "{name} ({size})"
 
str MULTI_META_TEMPLATE = "\n- {name} ({size}, {mcount}, {tcount})"
 
list OPTIONS_TEMPLATES
 Command-line help templates for rollover options, as [(name, text with s label placeholder)].
 
str START_META_TEMPLATE = "{mcount} in {tcount} to "
 

Properties

 size = property
 Returns current file size in bytes, including journals, or None if size lookup failed.
 
- Properties inherited from RolloverSinkMixin
 size = property
 Returns current file size in bytes, or None if size lookup failed.
 

Detailed Description

Writes messages to an SQLite database.

Output will have:

  • table "messages", with all messages as serialized binary data
  • table "types", with message definitions
  • table "topics", with topic information

plus:

  • table "pkg/MsgType" for each message type, with detailed fields, and JSON fields for arrays of nested subtypes, with foreign keys if nesting else subtype values as JSON dictionaries; plus underscore-prefixed fields for metadata, like _topic as the topic name.

    If launched with nesting-option, tables will also be created for each nested message type.

  • view "/topic/full/name" for each topic, selecting from the message type table

Definition at line 49 of file sqlite.py.

Constructor & Destructor Documentation

◆ __init__()

__init__ (   self,
  args = None,
**  kwargs 
)
Parameters
argsarguments as namespace or dictionary, case-insensitive; or a single path as the name of SQLitefile to write
args.writename of SQLite file to write, will be appended to if exists
args.write_options
{"commit-interval": transaction size (0 is autocommit),
 "message-yaml": populate messages.yaml (default true),
 "nesting": "array" to recursively insert arrays
            of nested types, or "all" for any nesting),
 "overwrite": whether to overwrite existing file
              (default false),
 "rollover-size": bytes limit for individual output files,
 "rollover-count": message limit for individual output files,
 "rollover-duration": time span limit for individual output files,
                      as ROS duration or convertible seconds,
 "rollover-template": output filename template, supporting
                      strftime format codes like "%H-%M-%S"
                      and "%(index)s" as output file index}
args.metawhether to emit metainfo
args.verbosewhether to emit debug information
kwargsany and all arguments as keyword overrides, case-insensitive

Reimplemented from BaseDataSink.

Definition at line 88 of file sqlite.py.

Member Function Documentation

◆ emit()

emit (   self,
  topic,
  msg,
  stamp = None,
  match = None,
  index = None 
)

Writes message to database.

Reimplemented from BaseDataSink.

Definition at line 123 of file sqlite.py.

◆ validate()

validate (   self)

Returns whether "commit-interval" and "nesting" in args.write_options have valid value, if any, and file is writable; parses "message-yaml" and "overwrite" from args.write_options.

Reimplemented from BaseDataSink.

Definition at line 101 of file sqlite.py.

Member Data Documentation

◆ DEFAULT_ARGS

DEFAULT_ARGS = dict(META=False, WRITE_OPTIONS={}, VERBOSE=False)
static

Constructor argument defaults.

Definition at line 61 of file sqlite.py.

◆ ENGINE [1/2]

str ENGINE = "SQLite"
static

Database engine name.

Definition at line 52 of file sqlite.py.

◆ ENGINE [2/2]

ENGINE

Definition at line 107 of file sqlite.py.

◆ FILE_EXTENSIONS

tuple FILE_EXTENSIONS = (".sqlite", ".sqlite3")
static

Auto-detection file extensions.

Definition at line 55 of file sqlite.py.

◆ filename

filename

Definition at line 137 of file sqlite.py.

◆ MAX_INT

int MAX_INT = 2**63 - 1
static

Maximum integer size supported in SQLite, higher values inserted as string.

Definition at line 58 of file sqlite.py.

◆ valid

valid

Definition at line 116 of file sqlite.py.

Property Documentation

◆ size

size = property
static

Returns current file size in bytes, including journals, or None if size lookup failed.

Definition at line 133 of file sqlite.py.


The documentation for this class was generated from the following file: