Skip to content

🐬 MySQL API

Parameterized queries and transactions over a pooled mysql2 connection.

Connection

ping

Verify connectivity to the database.

ts
ping(): Promise<{ pong: boolean }>
ts
const mysql = zedgi.mysql();
await mysql.ping(); // { pong: true }
python
mysql = zedgi.mysql()
mysql.ping()  # {'pong': True}
http
POST /rpc HTTP/1.1
Host: dev123.zedgi.app
x-zedgi-key: zk_live_xxx
content-type: application/json

{
  "service": "mysql",
  "method": "ping",
  "payload": {}
}

Queries

query

Run a parameterized SQL query. Returns rows and row count.

ts
query(sql, params?): Promise<{ rows, rowCount }>
ts
const mysql = zedgi.mysql();
const { rows } = await mysql.query(
  'SELECT id, email FROM users WHERE age > $1',
  [21]
);
python
mysql = zedgi.mysql()
result = mysql.query(
  'SELECT id, email FROM users WHERE age > %s',
  [21]
)
print(result["rows"])
http
POST /rpc HTTP/1.1
Host: dev123.zedgi.app
x-zedgi-key: zk_live_xxx
content-type: application/json

{
  "service": "mysql",
  "method": "query",
  "payload": {
    "sql": "SELECT id, email FROM users WHERE age > $1",
    "params": [
      21
    ]
  }
}

transaction

Run multiple statements atomically in one transaction.

ts
transaction(statements): Promise<results[]>
ts
const mysql = zedgi.mysql();
await mysql.transaction([
  { sql: 'INSERT INTO orders(user_id) VALUES ($1)', params: [1] },
  { sql: 'UPDATE users SET orders = orders + 1 WHERE id = $1', params: [1] },
]);
python
mysql = zedgi.mysql()
mysql.transaction([
  {"sql": "INSERT INTO orders(user_id) VALUES (%s)", "params": [1]},
  {"sql": "UPDATE users SET orders = orders + 1 WHERE id = %s", "params": [1]},
])
http
POST /rpc HTTP/1.1
Host: dev123.zedgi.app
x-zedgi-key: zk_live_xxx
content-type: application/json

{
  "service": "mysql",
  "method": "transaction",
  "payload": {
    "statements": [
      {
        "sql": "INSERT INTO orders(user_id) VALUES ($1)",
        "params": [
          1
        ]
      }
    ]
  }
}