py3odb

Python 3.6+ compatible interface to ECMWF's ODB API


License
MIT
Install
pip install py3odb==0.0.2

Documentation

build codecov PyPI Python docs

py3odb

Python 3.6+ compatible interface to ECMWF’s ODB API

Overview

ODB API was developed by the European Centre for Medium-Range Weather Forecasts for “encoding and processing of observational data.” The ODB API provides an SQL-like interface called odbsql, along with a Python 2 compatible API.

This module was written to provide an interface to ODB API using Python >=3.6. It requires access to libOdb provided by ODB API.

Usage

py3odb follows the Python Database API Specification:

import py3odb
connection = py3odb.connect('foo.db')
cursor = connection.cursor()
cursor.execute('SELECT * FROM "foo.db"')
for row in cursor:
    print(row)
connection.close()

For single queries, there is a Reader context manager and <odb> tag:

import py3odb
with py3odb.Reader('foo.db', 'SELECT * FROM <odb>') as odb_reader:
    for row in odb_reader:
        print(row)

Known Limitations

The intent of this library is to read odb2 files generated by the Unified Model for the purpose of observation monitoring. The underlying odbql interface to the ODB API provided by ECMWF does not support database operations in a traditional sense. For example: * as of ODB API version 17.6, odbql only supports 8 character strings * only the most recent INSERT command is accepted * you cannot open an existing odb file and do an INSERT

References