Skip to main content

A flask blueprint providing a read-lny API for querying RDBMS

Project description

apisql

PyPI - Python Version

apisql is a flask blueprint providing an API for read-only access for a DBMS using direct SQL Queries

endpoints

/query

Returns query results in json format.

Query parameters that can be send:

  • query: The SQL query to execute on the DB. The query can be provided in plain text or base64 encoded.
  • num_rows: The maximum number of rows to return. If not specified, will return the aount defined in the configuration, the amount defined in the environment variable APISQL__MAX_ROWS or 100.
  • page_size: The size of the 'page', when doing paging. By default will use num_rows and in any way the page size it won't exceed num_rows.
  • page: Which page to fetch, starting from page 0

/download

Downloads query results in either csv, xls or xlsx format.

Query parameters that can be send:

  • query: The SQL query to execute on the DB. The query can be provided in plain text or base64 encoded.

  • format: Either csv or xlsx. Defaults to csv.

  • filename: The filename for the file to be downloaded, without the extension. Defaults to query-results.

  • headers: A semicolon separated list of the headers for the output file. Headers should match the field names that appear in the query. Headers may contain one or more modifiers, which appear after a colon. The currently supported modifiers are:

    • number, to convert numeric values to strings
    • yesno, which converts boolean values to "Yes" / "No"
    • comma-separated, which converts arrays of strings to a comma separated list of these strings. Finally, the content for a column may be fetched from a different field in the query output, by specifying the field name after a < character.

    Example: Fiscal Year:number<fiscal_year;Leap Year:yesno<0;

Example: For the following SQL:

select employee_name as "Employee Name", employee_salary as "Salary", is_manager as "Managerial role?" from employees

headers could be specified as Employee Name;Managerial role?:yesno;Salary:number.

configuration

Flask configuration for this blueprint:

    from apisql import apisql_blueprint

    app.register_blueprint(
        apisql_blueprint(connection_string='psql://host/database', max_rows=1000, debug=False),
        url_prefix='/api/db/'
    )

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

apisql-0.8.0.tar.gz (8.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

apisql-0.8.0-py2.py3-none-any.whl (20.2 kB view details)

Uploaded Python 2Python 3

File details

Details for the file apisql-0.8.0.tar.gz.

File metadata

  • Download URL: apisql-0.8.0.tar.gz
  • Upload date:
  • Size: 8.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.12.1

File hashes

Hashes for apisql-0.8.0.tar.gz
Algorithm Hash digest
SHA256 f1089a6733a3ac39b02bfe9cb43e88312011d45996608fcaeefdde360f093fbc
MD5 c4782a1ad98823123d34c00d06740c6f
BLAKE2b-256 82989acc4610e19f518baa8f1a5db836ddd50cdf51e5f00b2e97917fbeded461

See more details on using hashes here.

File details

Details for the file apisql-0.8.0-py2.py3-none-any.whl.

File metadata

  • Download URL: apisql-0.8.0-py2.py3-none-any.whl
  • Upload date:
  • Size: 20.2 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.12.1

File hashes

Hashes for apisql-0.8.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 0442d668156c6a4b14dc83116510e2dfe11b6fab8f1402c1d9cd8fcfcbcc6572
MD5 29b64488a33a1b5b9c6dbd92a23ec1b8
BLAKE2b-256 fd6a33961ce3c46e8e4968be8fffd0a066530d4746172cd51df311c7494b550e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page