Skip to main content

SQL To OData

Tests Linter Security Release

This Python package provides tools to facilitate adding an OData interface in front of a SQL database. It currently only supports extracting SQLite table schemas and data in their entirety into static files, which can then be hosted on a website or otherwise provided to OData consumers.

It was initially built to create data that can be consumed on Tableau Public.

Prerequisites

Installation is via pip:

pip install sql-to-odata

Usage

Basic usage is as follows:

import sql_to_odata

odata_interface = sql_to_odata.ODataInterface(sqlite_filename='stuff.db')

# Extracts the schema for all tables in XML format
schema_xml = odata_interface.get_database_schema_xml()

# Extracts the data from a single table in JSON format
table_json = odata_interface.get_table_json('people')

# Dumps the schemas and all tables to a folder, with the schema
# file named "$metadata" and data files named after the tables;
# this output format can be directly served on a website
odata_interface.dump_database('/path/to/output')

# Dump only a portion of the tables in the database
odata_interface.dump_database('/path/to/output', tables_to_include=['people', 'places', 'things'])

Run help(sql_to_odata) to get more information on the available functions.

To-Do

  • Translate settings for nullable fields, default values, and primary keys
  • Create a test database that includes more variety of stuff, esp around datatypes
  • Add tests to ensure mapping of dates and times works (esp since OData requires a TZ-aware datetime)
  • Add support for more source databases

References

Metadata

Release files for sql-to-odata 0.3.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for sql-to-odata 0.3.1
File Size Uploaded Provenance
sql_to_odata-0.3.1.tar.gz 4.7 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for sql-to-odata 0.3.1
File Interpreter ABI Platform
sql_to_odata-0.3.1-py3-none-any.whl Python 3 none any Details

Total release size: 9.9 kB

Release files / sql_to_odata-0.3.1.tar.gz

Download URL sql_to_odata-0.3.1.tar.gz
Size 4.7 kB
Tags Source
SHA-256 checksum
How to use checksums
3ae237d2c8659cb1151340397ba5e48cbd7d4112e36d8e38fa40e980662662d4
BLAKE2b-256 checksum
How to use checksums
8fa10c22dda25f4c71785fc751503dd2f651c7f6d595b13be56e386740715d59
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.7.1 CPython/3.12.1 Linux/6.2.0-1018-azure

Release files / sql_to_odata-0.3.1-py3-none-any.whl

Download URL sql_to_odata-0.3.1-py3-none-any.whl
Size 5.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e8ae2fda8b2bd0b0fb9b3eb6ff47c010116e677e8d3c212309578ae65c0eb441
BLAKE2b-256 checksum
How to use checksums
2c37b0d29ba9d8f2b593e1de002789a1b0710495c234c2c8b655c656fe81693f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.7.1 CPython/3.12.1 Linux/6.2.0-1018-azure

Security for sql-to-odata 0.3.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page