跳转到主要内容

它允许将SQL文件导入为Python模块。

项目描述

它允许将SQL文件导入为Python模块。

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

需求

  • 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

演示

启动

$ 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进行测试。

贡献者

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源代码分发

sql-importer-1.0.0.tar.gz (4.8 kB 查看哈希值)

上传时间 源代码

支持者