summaryrefslogtreecommitdiff
path: root/gnu/packages/databases.scm
diff options
context:
space:
mode:
authorRicardo Wurmus <rekado@elephly.net>2017-11-17 22:34:32 +0100
committerRicardo Wurmus <rekado@elephly.net>2017-11-17 22:36:27 +0100
commita8714bf6801cf5058fd02bcb1d352a99d12bc870 (patch)
treef516523708268fe0592e61194e0bea443e8aae01 /gnu/packages/databases.scm
parentbe6eb2f1e6f77d3cff3bdaef12fdc4c26c806b92 (diff)
gnu: Move database packages from python.scm to databases.scm.
* gnu/packages/python.scm (python-ccm, python2-ccm, python2-pysqlite, python-sqlalchemy, python2-sqlalchemy, python-sqlalchemy-utils, python2-sqlalchemy-utils, python-alembic, python2-alembic, python-pickleshare, python2-pickleshare, python-apsw, python2-apsw, python2-neo4j-driver, python2-py2neo, python-psycopg2, python2-psycopg2, python-sadisplay, python2-sadisplay, python-mysqlclient, python2-mysqlclient, python-hiredis, python2-hiredis, python-fakeredis, python2-fakeredis, python-redis, python2-redis, python-rq, python2-rq, python-trollius-redis, python2-trollius-redis, python-sqlparse, python2-sqlparse, python-sql, python2-sql): Move from here... * gnu/packages/databases.scm: ...to here. * gnu/packages/tryton.scm, gnu/packages/python-web.scm, gnu/packages/nutrition.scm, gnu/packages/medical.scm: Adjust accordingly.
Diffstat (limited to 'gnu/packages/databases.scm')
-rw-r--r--gnu/packages/databases.scm564
1 files changed, 558 insertions, 6 deletions
diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm
index 6bc468679a..b825a24528 100644
--- a/gnu/packages/databases.scm
+++ b/gnu/packages/databases.scm
@@ -1,27 +1,34 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012, 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
-;;; Copyright © 2012, 2014, 2015 Andreas Enge <andreas@enge.fr>
-;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com>
+;;; Copyright © 2012, 2013, 2014, 2015, 2016 Andreas Enge <andreas@enge.fr>
+;;; Copyright © 2013, 2017 Cyril Roelandt <tipecaml@gmail.com>
;;; Copyright © 2014, 2016 David Thompson <davet@gnu.org>
;;; Copyright © 2014, 2015, 2016 Mark H Weaver <mhw@netris.org>
-;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.org>
+;;; Copyright © 2014, 2015 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2015, 2016 Sou Bunnbu <iyzsong@gmail.com>
;;; Copyright © 2015 Leo Famulari <leo@famulari.name>
-;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr>
+;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com>
+;;; Copyright © 2016 Christopher Allan Webber <cwebber@dustycloud.org>
+;;; Copyright © 2015, 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2016, 2017 ng0 <contact.ng0@cryptolab.net>
;;; Copyright © 2016, 2017 Roel Janssen <roel@gnu.org>
;;; Copyright © 2016 David Craven <david@craven.ch>
;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2016 Andy Patterson <ajpatter@uwaterloo.ca>
-;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2016 Danny Milosavljevic <dannym+a@scratchpost.org>
+;;; Copyright © 2016, 2017 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2017 Julien Lepiller <julien@lepiller.eu>
;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
+;;; Copyright © 2017 Jelle Licht <jlicht@fsfe.org>
+;;; Copyright © 2017 Adriano Peluso <catonano@gmail.com>
;;; Copyright © 2017 Arun Isaac <arunisaac@systemreboot.net>
;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2017 Alex Vong <alexvong1995@gmail.com>
;;; Copyright © 2017 Ben Woodcroft <donttrustben@gmail.com>
;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com>
;;; Copyright © 2017 Pierre Langlois <pierre.langlois@gmx.com>
-;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2015, 2017 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2017 Kristofer Buffington <kristoferbuffington@gmail.com>
;;;
;;; This file is part of GNU Guix.
@@ -1950,3 +1957,548 @@ package contains an old implementation based on legacy code from S-PLUS which
is being phased out. A modern MySQL client based on Rcpp is available from
the RMariaDB package.")
(license license:gpl2)))
+
+(define-public python-ccm
+ (package
+ (name "python-ccm")
+ (version "2.1.6")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "ccm" version))
+ (sha256
+ (base32
+ "177dfxsmk3k4cih6fh6v8d91bh4nqx7ns6pc07w7m7i3cvdx3c8n"))))
+ (build-system python-build-system)
+ (propagated-inputs
+ `(("python-pyyaml" ,python-pyyaml)
+ ;; Not listed in setup.py, but used in ccmlib/node.py for full
+ ;; functionality
+ ("python-psutil" ,python-psutil)
+ ("python-six" ,python-six)))
+ (home-page "https://github.com/pcmanus/ccm")
+ (synopsis "Cassandra Cluster Manager for Apache Cassandra clusters on
+localhost")
+ (description "Cassandra Cluster Manager is a development tool for testing
+local Cassandra clusters. It creates, launches and removes Cassandra clusters
+on localhost.")
+ (license license:asl2.0)))
+
+(define-public python2-ccm
+ (package-with-python2 python-ccm))
+
+(define-public python2-pysqlite
+ (package
+ (name "python2-pysqlite")
+ (version "2.8.3")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "pysqlite" version))
+ (sha256
+ (base32
+ "1424gwq9sil2ffmnizk60q36vydkv8rxs6m7xs987kz8cdc37lqp"))))
+ (build-system python-build-system)
+ (inputs
+ `(("sqlite" ,sqlite)))
+ (arguments
+ `(#:python ,python-2 ; incompatible with Python 3
+ #:tests? #f)) ; no test target
+ (home-page "https://github.com/ghaering/pysqlite")
+ (synopsis "SQLite bindings for Python")
+ (description
+ "Pysqlite provides SQLite bindings for Python that comply to the
+Database API 2.0T.")
+ (license license:zlib)))
+
+(define-public python-sqlalchemy
+ (package
+ (name "python-sqlalchemy")
+ (version "1.0.12")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://pypi.python.org/packages/source/S/"
+ "SQLAlchemy/SQLAlchemy-" version ".tar.gz"))
+ (sha256
+ (base32
+ "1l8qclhd0s90w3pvwhi5mjxdwr5j7gw7cjka2fx6f2vqmq7f4yb6"))))
+ (build-system python-build-system)
+ (native-inputs
+ `(("python-cython" ,python-cython) ;for c extensions
+ ("python-pytest" ,python-pytest)
+ ("python-mock" ,python-mock))) ;for tests
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (replace 'check
+ (lambda _ (zero? (system* "py.test")))))))
+ (home-page "http://www.sqlalchemy.org")
+ (synopsis "Database abstraction library")
+ (description
+ "SQLAlchemy is the Python SQL toolkit and Object Relational Mapper that
+gives application developers the full power and flexibility of SQL. It
+provides a full suite of well known enterprise-level persistence patterns,
+designed for efficient and high-performing database access, adapted into a
+simple and Pythonic domain language.")
+ (license license:x11)))
+
+(define-public python2-sqlalchemy
+ (package-with-python2 python-sqlalchemy))
+
+(define-public python-sqlalchemy-utils
+ (package
+ (name "python-sqlalchemy-utils")
+ (version "0.32.13")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "SQLAlchemy-Utils" version))
+ (sha256
+ (base32
+ "0vsib7gidjamzsz6w4s5pdhxzxsrkghjnm4sqwk94igjrl3i5ixj"))))
+ (build-system python-build-system)
+ (arguments
+ '(#:tests? #f)) ; FIXME: Many tests require a running database server.
+ ;; #:phases
+ ;; (modify-phases %standard-phases
+ ;; (replace 'check
+ ;; (lambda _
+ ;; (zero? (system* "py.test" "sqlalchemy_utils" "tests")))))
+ (propagated-inputs
+ `(("python-six" ,python-six)
+ ("python-sqlalchemy" ,python-sqlalchemy)))
+ (native-inputs
+ `(("python-dateutil" ,python-dateutil)
+ ("python-flexmock" ,python-flexmock)
+ ("python-psycopg2" ,python-psycopg2)
+ ("python-pytest" ,python-pytest)
+ ("python-pytz" ,python-pytz)))
+ (home-page "https://github.com/kvesteri/sqlalchemy-utils")
+ (synopsis "Various utility functions for SQLAlchemy")
+ (description
+ "SQLAlchemy-utils provides various utility functions and custom data types
+for SQLAlchemy. SQLAlchemy is an SQL database abstraction library for Python.
+
+You might also want to install the following optional dependencies:
+@enumerate
+@item @code{python-passlib}
+@item @code{python-babel}
+@item @code{python-cryptography}
+@item @code{python-pytz}
+@item @code{python-psycopg2}
+@item @code{python-furl}
+@item @code{python-flask-babel}
+@end enumerate
+")
+ (license license:bsd-3)))
+
+(define-public python2-sqlalchemy-utils
+ (package-with-python2 python-sqlalchemy-utils))
+
+(define-public python-alembic
+ (package
+ (name "python-alembic")
+ (version "0.9.5")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "alembic" version))
+ (sha256
+ (base32
+ "01gx2syqbaxh4hr9pf7pxhlb6p36qaf99140dy19lsx1paxb9p4b"))))
+ (build-system python-build-system)
+ (native-inputs
+ `(("python-mock" ,python-mock)
+ ("python-pytest-cov" ,python-pytest-cov)))
+ (propagated-inputs
+ `(("python-dateutil" ,python-dateutil)
+ ("python-sqlalchemy" ,python-sqlalchemy)
+ ("python-mako" ,python-mako)
+ ("python-editor" ,python-editor)))
+ (home-page "http://bitbucket.org/zzzeek/alembic")
+ (synopsis
+ "Database migration tool for SQLAlchemy")
+ (description
+ "Alembic is a lightweight database migration tool for usage with the
+SQLAlchemy Database Toolkit for Python.")
+ (license license:expat)))
+
+(define-public python2-alembic
+ (package-with-python2 python-alembic))
+
+(define-public python-pickleshare
+ (package
+ (name "python-pickleshare")
+ (version "0.5")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://pypi.python.org/packages/source/p/"
+ "pickleshare/pickleshare-" version ".tar.gz"))
+ (sha256
+ (base32 "11ljr90j3p6qswdrbl7p4cjb2i93f6vn0vx9anzpshsx0d2mggn0"))))
+ (build-system python-build-system)
+ (propagated-inputs
+ `(("python-pathpy" ,python-pathpy)))
+ (home-page "https://github.com/vivainio/pickleshare")
+ (synopsis "Tiny key value database with concurrency support")
+ (description
+ "PickleShare is a small ‘shelve’-like datastore with concurrency support.
+Like shelve, a PickleShareDB object acts like a normal dictionary. Unlike
+shelve, many processes can access the database simultaneously. Changing a
+value in database is immediately visible to other processes accessing the same
+database. Concurrency is possible because the values are stored in separate
+files. Hence the “database” is a directory where all files are governed by
+PickleShare.")
+ (license license:expat)))
+
+(define-public python2-pickleshare
+ (package-with-python2 python-pickleshare))
+
+(define-public python-apsw
+ (package
+ (name "python-apsw")
+ (version "3.9.2-r1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "apsw" version))
+ (sha256
+ (base32
+ "0w4jb0wpx785qw42r3h4fh7gl5w2968q48i7gygybsfxck8nzffs"))))
+ (build-system python-build-system)
+ (inputs
+ `(("sqlite" ,sqlite)))
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (replace 'build
+ (lambda _
+ (zero?
+ (system* "python" "setup.py" "build" "--enable-all-extensions"))))
+ (add-after 'build 'build-test-helper
+ (lambda _
+ (zero?
+ (system
+ (string-append "gcc -fPIC -shared -o ./testextension.sqlext "
+ "-I. -Isqlite3 src/testextension.c") ))))
+ (delete 'check)
+ (add-after 'install 'check
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (add-installed-pythonpath inputs outputs)
+ (zero? (system* "python" "setup.py" "test")))))))
+ (home-page "https://github.com/rogerbinns/apsw/")
+ (synopsis "Another Python SQLite Wrapper")
+ (description "APSW is a Python wrapper for the SQLite
+embedded relational database engine. In contrast to other wrappers such as
+pysqlite it focuses on being a minimal layer over SQLite attempting just to
+translate the complete SQLite API into Python.")
+ (license license:zlib)))
+
+(define-public python2-apsw
+ (package-with-python2 python-apsw))
+
+(define-public python2-neo4j-driver
+ (package
+ (name "python2-neo4j-driver")
+ ;; NOTE: When upgrading to 1.5.0, please add a python3 variant.
+ (version "1.4.0")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "neo4j-driver" version))
+ (sha256
+ (base32
+ "011r1vh182p8mm83d8dz9rfnc3l7rf7fd00cyrbyfzi71jmc4g98"))))
+ (build-system python-build-system)
+ (arguments
+ `(#:python ,python-2))
+ (home-page "https://neo4j.com/developer/python/")
+ (synopsis "Neo4j driver code written in Python")
+ (description "This package provides the Neo4j Python driver that connects
+to the database using Neo4j's binary protocol. It aims to be minimal, while
+being idiomatic to Python.")
+ (license license:asl2.0)))
+
+(define-public python2-py2neo
+ (package
+ (name "python2-py2neo")
+ (version "3.1.2")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "py2neo" version))
+ (sha256
+ (base32
+ "1f1q95vqcvlc3nsc33p841swnjdcjazddlq2dzi3qfnjqjrajxw1"))))
+ (build-system python-build-system)
+ (arguments
+ `(#:python ,python-2))
+ (home-page "http://py2neo.org")
+ (synopsis "Library and toolkit for working with Neo4j in Python")
+ (description "This package provides a client library and toolkit for
+working with Neo4j from within Python applications and from the command
+line. The core library has no external dependencies and has been carefully
+designed to be easy and intuitive to use.")
+ (license license:asl2.0)))
+
+(define-public python-psycopg2
+ (package
+ (name "python-psycopg2")
+ (version "2.7.3.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "psycopg2" version))
+ (sha256
+ (base32
+ "0rda1j02ds6s28752fhmpwg761sh6jsxi1gpczqkrd28cki1cywv"))))
+ (build-system python-build-system)
+ (arguments
+ ;; Tests would require a postgresql database "psycopg2_test"
+ ;; and a running postgresql database management service.
+ `(#:tests? #f)) ; TODO re-enable after providing a test-db.
+ (inputs
+ `(("postgresql" ,postgresql))) ; libpq
+ (home-page "http://initd.org/psycopg/")
+ (synopsis "Python PostgreSQL adapter")
+ (description
+ "psycopg2 is a thread-safe PostgreSQL adapter that implements DB-API 2.0. ")
+ (license license:lgpl3+)))
+
+(define-public python2-psycopg2
+ (package-with-python2 python-psycopg2))
+
+(define-public python-sadisplay
+ (package
+ (name "python-sadisplay")
+ (version "0.4.6")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "sadisplay" version))
+ (sha256
+ (base32
+ "0zqad2fl7q26p090qmqgmxbm6iwgf9zij1w8da1g3wdgjj72ql05"))))
+ (build-system python-build-system)
+ (propagated-inputs
+ `(("python-sqlalchemy" ,python-sqlalchemy)))
+ (native-inputs
+ `(("python-nose" ,python-nose)))
+ (home-page "https://bitbucket.org/estin/sadisplay")
+ (synopsis "SQLAlchemy schema displayer")
+ (description "This package provides a program to build Entity
+Relationship diagrams from a SQLAlchemy model (or directly from the
+database).")
+ (license license:bsd-3)))
+
+(define-public python2-sadisplay
+ (package-with-python2 python-sadisplay))
+
+(define-public python-mysqlclient
+ (package
+ (name "python-mysqlclient")
+ (version "1.3.10")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "mysqlclient" version))
+ (sha256
+ (base32
+ "0qkj570x4rbsblji6frvsvp2v1ap32dqzj1lq62zp9515ffsyaj5"))))
+ (build-system python-build-system)
+ (native-inputs
+ `(("mariadb" ,mariadb)
+ ("nose" ,python-nose)
+ ("mock" ,python-mock)
+ ("py.test" ,python-pytest)))
+ (inputs
+ `(("mysql" ,mysql)
+ ("libz" ,zlib)
+ ("openssl" ,openssl)))
+ (home-page "https://github.com/PyMySQL/mysqlclient-python")
+ (synopsis "MySQLdb is an interface to the popular MySQL database server for Python")
+ (description "MySQLdb is an interface to the popular MySQL database server
+for Python. The design goals are:
+@enumerate
+@item Compliance with Python database API version 2.0 [PEP-0249],
+@item Thread-safety,
+@item Thread-friendliness (threads will not block each other).
+@end enumerate")
+ (license license:gpl2)))
+
+(define-public python2-mysqlclient
+ (package-with-python2 python-mysqlclient))
+
+(define-public python-hiredis
+ (package
+ (name "python-hiredis")
+ (version "0.2.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "hiredis" version))
+ (sha256
+ (base32
+ "1dfm2k9l9zar9nw9fwmm74zrgraxdxs04vx9li56fjcf289qx5fa"))))
+ (build-system python-build-system)
+ (arguments
+ ;; no tests
+ `(#:tests? #f))
+ (home-page "https://github.com/redis/hiredis-py")
+ (synopsis "Python extension that wraps protocol parsing code in hiredis")
+ (description "Python-hiredis is a python extension that wraps protocol
+parsing code in hiredis. It primarily speeds up parsing of multi bulk replies.")
+ (license license:bsd-3)))
+
+(define-public python2-hiredis
+ (package-with-python2 python-hiredis))
+
+(define-public python-fakeredis
+ (package
+ (name "python-fakeredis")
+ (version "0.8.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "fakeredis" version))
+ (sha256
+ (base32
+ "0zncahj3byyasyfx9i7k991ph0n0lq8v3a21pqri5qxn9564bk9r"))))
+ (build-system python-build-system)
+ (arguments
+ ;; no tests
+ `(#:tests? #f))
+ (home-page "https://github.com/jamesls/fakeredis")
+ (synopsis "Fake implementation of redis API for testing purposes")
+ (description "Fakeredis is a pure python implementation of the redis-py
+python client that simulates talking to a redis server. This was created for a
+single purpose: to write unittests. Setting up redis is not hard, but many time
+ you want to write unittests that do not talk to an external server (such as
+redis). This module now allows tests to simply use this module as a reasonable
+substitute for redis.")
+ (license license:bsd-3)))
+
+(define-public python2-fakeredis
+ (package-with-python2 python-fakeredis))
+
+(define-public python-redis
+ (package
+ (name "python-redis")
+ (version "2.10.5")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "redis" version))
+ (sha256
+ (base32 "0csmrkxb29x7xs9b51zplwkkq2hwnbh9jns1g85dykn5rxmaxysx"))))
+ (build-system python-build-system)
+ ;; Tests require a running Redis server
+ (arguments '(#:tests? #f))
+ ;; As long as we are not running test, we do not need this input :-)
+ ;;(native-inputs
+ ;; `(("python-pytest" ,python-pytest)))
+ (home-page "https://github.com/andymccurdy/redis-py")
+ (synopsis "Redis Python client")
+ (description
+ "This package provides a Python interface to the Redis key-value store.")
+ (license license:expat)))
+
+(define-public python2-redis
+ (package-with-python2 python-redis))
+
+(define-public python-rq
+ (package
+ (name "python-rq")
+ (version "0.7.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "rq" version))
+ (sha256
+ (base32 "0gaq5pnh0zy46r8jvygi0ifbvz3pq6i7xla78ijcgjw0x77qzsdh"))))
+ (build-system python-build-system)
+ (propagated-inputs
+ `(("python-click" ,python-click)
+ ("python-redis" ,python-redis)))
+ (home-page "http://python-rq.org/")
+ (synopsis "Simple job queues for Python")
+ (description
+ "RQ (Redis Queue) is a simple Python library for queueing jobs and
+processing them in the background with workers. It is backed by Redis and it
+is designed to have a low barrier to entry.")
+ (license license:bsd-2)))
+
+(define-public python2-rq
+ (package-with-python2 python-rq))
+
+(define-public python-trollius-redis
+ (package
+ (name "python-trollius-redis")
+ (version "0.1.4")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "trollius_redis" version))
+ (sha256
+ (base32
+ "0k3vypszmgmaipgw9xscvgm79h2zd6p6ci8gdp5sxl6g5kbqr9fy"))))
+ (build-system python-build-system)
+ ;; TODO: Tests require packaging 'hiredis'.
+ (arguments '(#:tests? #f))
+ (home-page "https://github.com/benjolitz/trollius-redis")
+ (synopsis "Port of asyncio-redis to trollius")
+ (description "@code{trollius-redis} is a Redis client for Python
+ trollius. It is an asynchronious IO (PEP 3156) implementation of the
+ Redis protocol.")
+ (license license:bsd-2)))
+
+(define-public python2-trollius-redis
+ (package-with-python2 python-trollius-redis))
+
+(define-public python-sqlparse
+ (package
+ (name "python-sqlparse")
+ (version "0.2.4")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "sqlparse" version))
+ (sha256
+ (base32
+ "1v3xh0bkfhb262dbndgzhivpnhdwavdzz8jjhx9vx0xbrx2880nf"))))
+ (build-system python-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (replace 'check
+ (lambda _ (zero? (system* "py.test")))))))
+ (native-inputs
+ `(("python-pytest" ,python-pytest)))
+ (home-page "https://github.com/andialbrecht/sqlparse")
+ (synopsis "Non-validating SQL parser")
+ (description "Sqlparse is a non-validating SQL parser for Python. It
+provides support for parsing, splitting and formatting SQL statements.")
+ (license license:bsd-3)))
+
+(define-public python2-sqlparse
+ (package-with-python2 python-sqlparse))
+
+(define-public python-sql
+ (package
+ (name "python-sql")
+ (version "0.9")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "python-sql" version))
+ (sha256
+ (base32
+ "0p6kaqj02vz0habmdx37zjk6hjxdfm8aw737zs059vvpr70ird87"))))
+ (build-system python-build-system)
+ (home-page "https://python-sql.tryton.org/")
+ (synopsis "Library to write SQL queries in a pythonic way")
+ (description "@code{python-sql} is a library to write SQL queries, that
+transforms idiomatic python function calls to well-formed SQL queries.")
+ (license license:bsd-3)))
+
+(define-public python2-sql
+ (package-with-python2 python-sql))