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 )
Links
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
File details
Details for the file sql-importer-1.0.0.tar.gz
.
File metadata
- Download URL: sql-importer-1.0.0.tar.gz
- Upload date:
- Size: 4.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7aa705f5745d37fc39d14716c6e4600aa506a316604e5f5bed7fe92798bd5cbd |
|
MD5 | 4462f71ed0326eed304fdc24b3c4e232 |
|
BLAKE2b-256 | 06d75398d35a2c0db61932933a849bd86354b274b6f3f2b9c2e95ef001e79f17 |