它使sql文件能够作为python模块导入。

sql-importer的Python项目详细描述


它允许将sql文件作为python模块导入。

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

要求

  • python 2.7版
  • python 3.6

安装

$ pip install sql-importer

用法

  • 必须在SQL文件所在的同一目录下创建\uu init\uuu.py

  • 像下面这样写到.py

    ## if using django:# from django.db import connectionimportosfromsql_importerimportinitinit(os.path.dirname(__file__),globals(),connection,sql_type='postgresql')
  • 仅此而已,您可以将sql文件(删除.sql后缀)导入为python模块。

    • 示例: Test/SQL/SuMySalest.SQL。
    SELECTSUM(price)ASsum_salesFROMsalesWHEREsales_from>=:'sales_from'ANDsales_to<:'sales_to';
    fromdatetimeimportdatefromtestingimportsqlsql.sum_sales.query(sales_from=date(2017,5,22),sales_to=date(2017,12,26))
    • sql对象有两个方法,两个方法都执行sql并接收变量作为关键字参数。
      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.
  • 现在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
>>>fromtests.postgresqlimportsql>>>sql.sql.clearsql.create_tablesql.drop_tablesql.init(sql.ossql.selectsql.connectionsql.deletesql.hostsql.insertsql.psycopg2sql.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测试。

贡献者

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何调试Quarkus/SmallRye客户端请求   安卓找不到R.layout。主要活动中的主要活动。JAVA   java使复制的图像都独立旋转   java需要一双新眼睛来找出为什么我的四边形没有被着色   java记录方法调用,包括参数,以便在程序执行后可以执行这些参数   JavaSpringMVC+AngularJS向数据库添加多个条目   java删除具有重复字段值的entrySet对象   为什么我们无法解密使用ECB/PKCS1使用RSA加密在python中加密的java数据   并行处理java。util。同时发生的拒绝执行异常,等待终止   java/groovy使用指定的值从列表中收集元素   java在spring webproject中使用CSS和JS   在以下任何来源中都找不到java插件[id:'com.gradle.enterprise',版本:'3.2']   在java中知道时间是否已经过去的日期   java如何在JavaFX中为两个节点之间的2D曲线箭头设置动画   JAVAsql。SQLException:第1行“IdentitCAT”列的整数值“Guitare”不正确   如何获取使用数组删除的元素详细信息。使用couchbase Java SDK的asList(remove())?   ssl得到了JAVA例外:JAVA。安全spec.InvalidKeySpecException:未知的KeySpec类型   多线程Java扫描器输入在单独的线程中