它允许将SQL文件导入为Python模块。
项目描述
它允许将SQL文件导入为Python模块。
需求
Python 2.7
Python 3.6
安装
$ pip install sql-importer
用法
您必须在放置SQL文件的同一目录中创建一个__init__.py。
并将以下内容写入到__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')
就是这样,您可以将SQL文件(移除.sql后缀)作为Python模块导入。
示例:存在testing/sql/sum_sales.sql。
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对象有2个方法,这两个方法都执行SQL并接收变量作为关键字参数。
- query:
它返回记录。它期望只有一个或多个结果,如select查询。
- execute:
它返回SQL影响的记录数。
现在sql_type参数允许postgresql。
如果您想使用其他sql_type,请在此处提交问题https://github.com/beproud/sql-importer .
演示
启动
$ git clone git@github.com:beproud/sql-importer.git
$ cd sql-importer
$ docker-compose up
准备
$ docker exec -it sqlimporter_app_1 /bin/bash
# python -m venv venv # only first time
# source venv/bin/activate
尝试
(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())
[]
单元测试
(venv) # tox
此库仅通过最新的postgresql进行测试。
贡献者
aodag ( https://github.com/aodag )
crohaco ( https://github.com/righ )
链接
项目详情
关闭
sql-importer-1.0.0.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 7aa705f5745d37fc39d14716c6e4600aa506a316604e5f5bed7fe92798bd5cbd |
|
MD5 | 4462f71ed0326eed304fdc24b3c4e232 |
|
BLAKE2b-256 | 06d75398d35a2c0db61932933a849bd86354b274b6f3f2b9c2e95ef001e79f17 |