semvec/pypi-packages huggingface dataset:
nlsql 0.0.2
generates SQL query from natural language for your PostrgreSQL database
License: MIT
Requires Python: <4.0,>=3.8
Keywords: postgres, sql, text-to-sq, llm

# NLSQL

Generates SQL query from natural language for your PostrgreSQL database. 
Simply connects to your database, gets the schema and generates query appropriately.

## User Guide

you can use nlsql as httpserver and as a cli-command

## Installation
```bash
pip install nlsql
```

## run as http server
1. start up the api server
	```bash
	nlsql -s
	```
2. get results via curl
	```curl
	curl --location 'http://localhost:8000/query' \
	--header 'Content-Type: application/json' \
	--data-raw '{
	"question": "get users with post that has top views and top reactions in the last 24 hours",
	"db_url": "postgresql://postgres:postgres@localhost:5432/postgres"
	}'
	```

## run as cli command

```bash
nlsql -m "./Nous-Hermes-2-Mistral-7B-DPO.Q4_0.gguf" -d "postgresql://postgres:postgres@localhost:5432/postgres" -q "get users with post that has top views and top reactions in the last 24 hours"
```
## Response
```sql
    SELECT DISTINCT ON (users.id) users.id, users.name
    FROM users
    JOIN posts ON users.id = posts.post_creator_user_id
    WHERE posts.created_at > now() - interval '1 day'
    GROUP BY users.id, users.name
    HAVING SUM(posts.views) >= ALL (SELECT SUM(views) FROM posts WHERE created_at > now() - interval '1 day') AND SUM(posts.reactions) >= ALL (SELECT SUM(reactions) FROM posts WHERE created_at > now() - interval '1 day');
```

response was generated over the following `users` and `posts` tables:
```
postgres=# \d users
   Column   |            Type             | Collation | Nullable |              Default              
------------+-----------------------------+-----------+----------+-----------------------------------
 id         | integer                     |           | not null | nextval('users_id_seq'::regclass)
 name       | text                        |           |          | 
 created_at | timestamp without time zone |           |          | 

postgres=# \d posts
        Column        |            Type             | Collation | Nullable |              Default              
----------------------+-----------------------------+-----------+----------+-----------------------------------
 id                   | integer                     |           | not null | nextval('posts_id_seq'::regclass)
 title                | text                        |           |          | 
 url                  | text                        |           |          | 
 post_creator_user_id | integer                     |           |          | 
 views                | integer                     |           |          | 
 reactions            | integer                     |           |          | 
 created_at           | timestamp without time zone |           |          | 
 updated_at           | timestamp without time zone |           |          | 

 ```