Skip to main content

It enables SQL files to be imported as python modules.

https://circleci.com/gh/beproud/sql-importer.svg?style=svg

Requirements

  • Python 2.7

  • Python 3.6

Install

$ pip install sql-importer

Usage

  • You have to make __init__.py at the same directory which sql files have been placed on.

  • And write like the following to the __init__.py:

    ## if using django:
    # from django.db import connection
    
    import os
    from sql_importer import init
    init(os.path.dirname(__file__), globals(), connection, sql_type='postgresql')
  • That’s all, you can import sql files (removed .sql suffix) as python modules.

    • Example: testing/sql/sum_sales.sql exists.

    SELECT SUM(price) AS sum_sales FROM sales
    WHERE
      sales_from >= :'sales_from'
      AND sales_to < :'sales_to'
    ;
    from datetime import date
    from testing import sql
    sql.sum_sales.query(sales_from=date(2017, 5, 22), sales_to=date(2017, 12, 26))
    • sql object has 2 methods, both method execute the sql and receive variables as keyword arguments.

      query:

      It returns records. it expects only what has one or more results like select query.

      execute:

      It returns number of records affected by the SQL.

  • Now sql_type argument allows postgresql.

Demo

start up

$ git clone git@github.com:beproud/sql-importer.git
$ cd sql-importer
$ docker-compose up

preparation

$ docker exec -it sqlimporter_app_1 /bin/bash
# python -m venv venv # only first time
# source venv/bin/activate

Try

(venv) # ls tests/postgresql/sql
__init__.py  __init__.pyc  __pycache__        clear.sql  create_table.sql  delete.sql  drop_table.sql  insert.sql  select.sql  update.sql

 (venv) # python
>>> from tests.postgresql import sql
>>> sql.
sql.clear         sql.create_table  sql.drop_table    sql.init(         sql.os            sql.select
sql.connection    sql.delete        sql.host          sql.insert        sql.psycopg2      sql.update

>>> sql.create_table.execute()
-1
>>> sql.insert.execute(name='apple', price=100)
1
>>> list(sql.select.query())
[{'name': 'apple', 'price': 100}]
>>> sql.delete.execute(name='orange')
0
>>> sql.delete.execute(name='apple')
1
>>> list(sql.select.query())
[]

Unittest

(venv) # tox
  • This library is tested by only latest postgresql.

Contributors

Metadata

Release files for sql-importer 1.0.0

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-importer 1.0.0
File Size Uploaded
sql-importer-1.0.0.tar.gz 4.8 kB Details

Release files / sql-importer-1.0.0.tar.gz

Download URL sql-importer-1.0.0.tar.gz
Size 4.8 kB
Tags Source
SHA-256 checksum
How to use checksums
7aa705f5745d37fc39d14716c6e4600aa506a316604e5f5bed7fe92798bd5cbd
BLAKE2b-256 checksum
How to use checksums
06d75398d35a2c0db61932933a849bd86354b274b6f3f2b9c2e95ef001e79f17
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

1.0.0 This release

1 release file

0.0.0

1 release file

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