it enables sql files to be imported as a python module.
Project description
It enables SQL files to be imported as python modules.
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.
- If you want to use the other sql_type, please make the issue on https://github.com/beproud/sql-importer .
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
- aodag ( https://github.com/aodag )
- crohaco ( https://github.com/righ )
Project details
Release history Release notifications | RSS feed
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 hashes)