Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/pilotpirxie/ormgpt
An ORM based on OpenAI that translates plain language into SQL queries and executes them on a database.
https://github.com/pilotpirxie/ormgpt
chatgpt database database-management db gpt gpt-3 gpt-4 orm orm-framework orms query
Last synced: 3 months ago
JSON representation
An ORM based on OpenAI that translates plain language into SQL queries and executes them on a database.
- Host: GitHub
- URL: https://github.com/pilotpirxie/ormgpt
- Owner: pilotpirxie
- License: mit
- Created: 2023-10-12T14:37:02.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2023-10-12T19:57:15.000Z (over 1 year ago)
- Last Synced: 2024-10-15T16:04:20.681Z (3 months ago)
- Topics: chatgpt, database, database-management, db, gpt, gpt-3, gpt-4, orm, orm-framework, orms, query
- Language: TypeScript
- Homepage:
- Size: 2.91 MB
- Stars: 55
- Watchers: 2
- Forks: 8
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# ormGPT
An ORM based on OpenAI that translates plain human language into SQL queries and executes them on a database.
Currently supports database dialects: MySQL, PostgreSQL, and SQLite.
Supported languages: English, German, French, Spanish, Polish, Italian, Dutch, Portuguese, Ukrainian, Arabic, Chinese, Japanese, Korean, Turkish and many more.
```shell
ormgpt.query("give me post with id 1, all comments for this post and user information about author");
```Generated query:
```sql
SELECT
p.id AS post_id,
p.title,
p.body,
c.id AS comment_id,
c.body AS comment_body,
u.username AS author_username,
u.email AS author_email
FROM
posts p
JOIN comments c ON p.id = c.post_id
JOIN users u ON u.id = p.user_id
WHERE
p.id = 1;
```Response:
```js
[
{
post_id: 1,
title: 'Hello world!',
body: 'This is my first post!',
comment_id: 1,
comment_body: 'Hello world!',
author_username: 'test',
author_email: '[email protected]'
}
]
```![./preview.gif](./preview.gif)
## Installation
```shell
npm install ormgpt# or
yarn add ormgpt
# or
pnpm add ormgpt
```## Usage
Prepare a database schema file, for example `schema.sql`. This file will be used to generate queries.```js
const client = await createConnection({
host: 'localhost',
port: 3306,
database: 'ormgpt',
user: 'root',
password: 'mysecretpassword',
});const mysqlAdapter = new MysqlAdapter({
client
});const ormgpt = new ormGPT({
apiKey: "OPENAI_API_KEY",
schemaFilePath: "./example/schema.sql",
dialect: "postgres",
dbEngineAdapter: mysqlAdapter,
});await ormgpt.query(
"add new user with username 'test' and email '[email protected]'",
);
const users = await ormgpt.query("get all users");
console.log(users);
```### Adapters
MySQL
```js
const client = await createConnection({
host: 'localhost',
port: 3306,
database: 'ormgpt',
user: 'root',
password: 'mysecretpassword',
});const mysqlAdapter = new MysqlAdapter({
client
});
```Postgres
```js
const client = new Client({
host: 'localhost',
port: 5432,
database: 'ormgpt',
user: 'mysecretuser',
password: 'mysecretpassword',
});
client.connect();const postgresAdapter = new PostgresAdapter({
client
});
```SQLite
```js
const sqliteAdapter = new SqliteAdapter({
dbFilePath: "./example/db.sqlite",
});
```### Why?
In the last two years, I found ORMs to be new "days since the last javascript framework" in the JavaScript ecosystem. And since AI is a hot buzzword
I decided to experiment a little to combine both and create an ORM that uses OpenAI to generate SQL queries. Please don't use this in production.### License
MIT