Options
All
  • Public
  • Public/Protected
  • All
Menu

deno_mysql

Build Status GitHub GitHub release (Deno)

MySQL and MariaDB (5.5 and 10.2+) database driver for Deno.

MariaDB 10.0 and 10.1 are not supported at the moment

On this basis, there is also an ORM library: Deno Simple Orm

欢迎国内的小伙伴加我专门建的 Deno QQ 交流群:698469316

TODO

  • Connecting to database
    • Retring
    • Timeout
  • Basic login authentication
  • Simple queries (no arguments)
  • Parsing data types
  • Queries with parameters
  • Close connection
  • Connection pool
  • Transaction
  • Test case
  • Support MariaDB 10.0
  • Support MariaDB 10.1
  • Support caching_sha2_password auth plugin (mysql8 default)

API

connect

import { Client } from "https://deno.land/x/mysql/mod.ts";
const client = await new Client().connect({
  hostname: "127.0.0.1",
  username: "root",
  db: "dbname",
  password: "password",
});

connect pool

Create client with connection pool.

pool size is auto increment from 0 to poolSize

import { Client } from "https://deno.land/x/mysql/mod.ts";
const client = await new Client().connect({
  hostname: "127.0.0.1",
  username: "root",
  db: "dbname",
  poolSize: 3, // connection limit
  password: "password",
});

create database

await client.execute(`CREATE DATABASE IF NOT EXISTS enok`);
await client.execute(`USE enok`);

create table

await client.execute(`DROP TABLE IF EXISTS users`);
await client.execute(`
    CREATE TABLE users (
        id int(11) NOT NULL AUTO_INCREMENT,
        name varchar(100) NOT NULL,
        created_at timestamp not null default current_timestamp,
        PRIMARY KEY (id)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
`);

insert

let result = await client.execute(`INSERT INTO users(name) values(?)`, [
  "manyuanrong",
]);
console.log(result);
// { affectedRows: 1, lastInsertId: 1 }

update

let result = await client.execute(`update users set ?? = ?`, ["name", "MYR"]);
console.log(result);
// { affectedRows: 1, lastInsertId: 0 }

delete

let result = await client.execute(`delete from users where ?? = ?`, ["id", 1]);
console.log(result);
// { affectedRows: 1, lastInsertId: 0 }

query

const username = "manyuanrong";
const users = await client.query(`select * from users`);
const queryWithParams = await client.query(
  "select ??,name from ?? where id = ?",
  ["id", "users", 1]
);
console.log(users, queryWithParams);

transaction

const users = await client.transaction(async (conn) => {
  await conn.execute(`insert into users(name) values(?)`, ["test"]);
  return await conn.query(`select ?? from ??`, ["name", "users"]);
});
console.log(users.length);

close

await client.close();

Test

The tests require a database to run against.

docker container run --rm -d -p 3306:3306 -e MYSQL_ALLOW_EMPTY_PASSWORD=true docker.io/mariadb:latest
deno test --allow-env --allow-net=127.0.0.1:3306 ./test.ts

Use different docker images to test against different versions of MySQL and MariaDB. Please see ci.yml for examples.

Index

Type aliases

ExecuteResult

ExecuteResult: object

Type declaration

  • Optional affectedRows: number
  • Optional fields: FieldInfo[]
  • Optional lastInsertId: number
  • Optional rows: any[]

Variables

Let isDebug

isDebug: boolean = false

Functions

auth

  • auth(authPluginName: string, password: string, seed: Uint8Array): Uint8Array
  • Parameters

    • authPluginName: string
    • password: string
    • seed: Uint8Array

    Returns Uint8Array

cachingSha2Password

  • cachingSha2Password(password: string, seed: Uint8Array): Uint8Array
  • Parameters

    • password: string
    • seed: Uint8Array

    Returns Uint8Array

mysqlNativePassword

  • mysqlNativePassword(password: string, seed: Uint8Array): Uint8Array
  • Parameters

    • password: string
    • seed: Uint8Array

    Returns Uint8Array

xor

  • xor(a: Uint8Array, b: Uint8Array): Uint8Array
  • Parameters

    • a: Uint8Array
    • b: Uint8Array

    Returns Uint8Array

Legend

  • Module
  • Object literal
  • Variable
  • Function
  • Function with type parameter
  • Index signature
  • Type alias
  • Enumeration
  • Enumeration member
  • Property
  • Method
  • Interface
  • Interface with type parameter
  • Constructor
  • Property
  • Method
  • Index signature
  • Class
  • Class with type parameter
  • Constructor
  • Property
  • Method
  • Accessor
  • Index signature
  • Inherited constructor
  • Inherited property
  • Inherited method
  • Inherited accessor
  • Protected property
  • Protected method
  • Protected accessor
  • Private property
  • Private method
  • Private accessor
  • Static property
  • Static method

Generated using TypeDoc