Skip to main content

it enables sql files to be imported as a python module.

Project description

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

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

sql-importer-1.0.0.tar.gz (4.8 kB view details)

Uploaded Source

File details

Details for the file sql-importer-1.0.0.tar.gz.

File metadata

File hashes

Hashes for sql-importer-1.0.0.tar.gz
Algorithm Hash digest
SHA256 7aa705f5745d37fc39d14716c6e4600aa506a316604e5f5bed7fe92798bd5cbd
MD5 4462f71ed0326eed304fdc24b3c4e232
BLAKE2b-256 06d75398d35a2c0db61932933a849bd86354b274b6f3f2b9c2e95ef001e79f17

See more details on using hashes here.

Supported by

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