Skip to content

MySQL Protocol Examples

Comprehensive code examples for using HeliosDB with MySQL protocol.

Connection Examples

Python with mysql-connector-python

import mysql.connector
from mysql.connector import pooling

# Basic connection
def basic_connection():
    conn = mysql.connector.connect(
        host="localhost",
        port=3306,
        user="admin",
        password="password",
        database="heliosdb"
    )
    return conn

# Connection pool
def create_pool():
    pool = pooling.MySQLConnectionPool(
        pool_name="mypool",
        pool_size=10,
        host="localhost",
        port=3306,
        user="admin",
        password="password",
        database="heliosdb"
    )
    return pool

# SSL connection
def ssl_connection():
    conn = mysql.connector.connect(
        host="localhost",
        port=3306,
        user="admin",
        password="password",
        database="heliosdb",
        ssl_ca="/path/to/ca.pem",
        ssl_cert="/path/to/client-cert.pem",
        ssl_key="/path/to/client-key.pem"
    )
    return conn

Node.js with mysql2

const mysql = require('mysql2/promise');

// Basic connection
async function basicConnection() {
  const connection = await mysql.createConnection({
    host: 'localhost',
    port: 3306,
    user: 'admin',
    password: 'password',
    database: 'heliosdb'
  });
  return connection;
}

// Connection pool
function createPool() {
  return mysql.createPool({
    host: 'localhost',
    port: 3306,
    user: 'admin',
    password: 'password',
    database: 'heliosdb',
    waitForConnections: true,
    connectionLimit: 10,
    queueLimit: 0
  });
}

// Execute query
async function executeQuery() {
  const pool = createPool();
  const [rows, fields] = await pool.execute(
    'SELECT * FROM users WHERE status = ?',
    ['active']
  );
  return rows;
}

Go with go-sql-driver/mysql

package main

import (
    "database/sql"
    "fmt"
    _ "github.com/go-sql-driver/mysql"
)

func main() {
    // Connection string
    dsn := "admin:password@tcp(localhost:3306)/heliosdb"

    // Open connection
    db, err := sql.Open("mysql", dsn)
    if err != nil {
        panic(err)
    }
    defer db.Close()

    // Configure pool
    db.SetMaxOpenConns(25)
    db.SetMaxIdleConns(5)

    // Query
    rows, err := db.Query("SELECT id, name FROM users")
    if err != nil {
        panic(err)
    }
    defer rows.Close()

    for rows.Next() {
        var id int
        var name string
        rows.Scan(&id, &name)
        fmt.Printf("ID: %d, Name: %s\n", id, name)
    }
}

CRUD Operations

Create (INSERT)

import mysql.connector

conn = mysql.connector.connect(
    host="localhost",
    port=3306,
    user="admin",
    password="password",
    database="heliosdb"
)
cursor = conn.cursor()

# Single insert
cursor.execute("""
    INSERT INTO users (name, email, created_at)
    VALUES (%s, %s, NOW())
""", ("Alice", "alice@example.com"))

# Bulk insert
users = [
    ("Bob", "bob@example.com"),
    ("Charlie", "charlie@example.com"),
    ("Diana", "diana@example.com")
]
cursor.executemany("""
    INSERT INTO users (name, email)
    VALUES (%s, %s)
""", users)

# Upsert (ON DUPLICATE KEY UPDATE)
cursor.execute("""
    INSERT INTO users (id, name, email, updated_at)
    VALUES (%s, %s, %s, NOW())
    ON DUPLICATE KEY UPDATE
        name = VALUES(name),
        email = VALUES(email),
        updated_at = NOW()
""", (1, "Alice Updated", "alice.new@example.com"))

conn.commit()
cursor.close()
conn.close()

Read (SELECT)

import mysql.connector

conn = mysql.connector.connect(
    host="localhost",
    port=3306,
    user="admin",
    password="password",
    database="heliosdb"
)
cursor = conn.cursor(dictionary=True)  # Return rows as dictionaries

# Simple query
cursor.execute("SELECT * FROM users WHERE status = 'active'")
users = cursor.fetchall()

# With parameters
cursor.execute("""
    SELECT u.*, COUNT(o.id) as order_count
    FROM users u
    LEFT JOIN orders o ON u.id = o.user_id
    WHERE u.created_at > %s
    GROUP BY u.id
    HAVING order_count > %s
    ORDER BY order_count DESC
    LIMIT %s
""", ("2024-01-01", 5, 10))

top_users = cursor.fetchall()
for user in top_users:
    print(f"{user['name']}: {user['order_count']} orders")

cursor.close()
conn.close()

Update

import mysql.connector

conn = mysql.connector.connect(
    host="localhost",
    port=3306,
    user="admin",
    password="password",
    database="heliosdb"
)
cursor = conn.cursor()

# Single update
cursor.execute("""
    UPDATE users
    SET status = %s, updated_at = NOW()
    WHERE id = %s
""", ("inactive", 1))

# Bulk update with conditions
cursor.execute("""
    UPDATE orders
    SET status = 'cancelled'
    WHERE created_at < DATE_SUB(NOW(), INTERVAL 30 DAY)
      AND status = 'pending'
""")

print(f"Rows affected: {cursor.rowcount}")
conn.commit()
cursor.close()
conn.close()

Delete

import mysql.connector

conn = mysql.connector.connect(
    host="localhost",
    port=3306,
    user="admin",
    password="password",
    database="heliosdb"
)
cursor = conn.cursor()

# Soft delete
cursor.execute("""
    UPDATE users
    SET deleted_at = NOW(), status = 'deleted'
    WHERE id = %s
""", (1,))

# Hard delete
cursor.execute("""
    DELETE FROM sessions
    WHERE expires_at < NOW()
""")

print(f"Rows deleted: {cursor.rowcount}")
conn.commit()
cursor.close()
conn.close()

Transactions

import mysql.connector

conn = mysql.connector.connect(
    host="localhost",
    port=3306,
    user="admin",
    password="password",
    database="heliosdb",
    autocommit=False
)
cursor = conn.cursor()

try:
    # Start transaction
    conn.start_transaction(isolation_level='REPEATABLE READ')

    # Debit from account A
    cursor.execute("""
        UPDATE accounts SET balance = balance - %s
        WHERE id = %s AND balance >= %s
    """, (100, 1, 100))

    if cursor.rowcount == 0:
        raise Exception("Insufficient funds")

    # Credit to account B
    cursor.execute("""
        UPDATE accounts SET balance = balance + %s
        WHERE id = %s
    """, (100, 2))

    # Record transfer
    cursor.execute("""
        INSERT INTO transfers (from_account, to_account, amount, created_at)
        VALUES (%s, %s, %s, NOW())
    """, (1, 2, 100))

    # Commit transaction
    conn.commit()
    print("Transfer successful")

except Exception as e:
    # Rollback on error
    conn.rollback()
    print(f"Transfer failed: {e}")
finally:
    cursor.close()
    conn.close()

Prepared Statements

import mysql.connector

conn = mysql.connector.connect(
    host="localhost",
    port=3306,
    user="admin",
    password="password",
    database="heliosdb"
)
cursor = conn.cursor(prepared=True)

# Prepare statement
stmt = """
    SELECT id, name, email
    FROM users
    WHERE status = %s AND created_at > %s
"""

# Execute multiple times with different parameters
for status in ['active', 'pending', 'inactive']:
    cursor.execute(stmt, (status, '2024-01-01'))
    users = cursor.fetchall()
    print(f"{status}: {len(users)} users")

cursor.close()
conn.close()

JSON Operations

import mysql.connector
import json

conn = mysql.connector.connect(
    host="localhost",
    port=3306,
    user="admin",
    password="password",
    database="heliosdb"
)
cursor = conn.cursor(dictionary=True)

# Create table with JSON column
cursor.execute("""
    CREATE TABLE IF NOT EXISTS products (
        id INT AUTO_INCREMENT PRIMARY KEY,
        name VARCHAR(255),
        attributes JSON
    )
""")

# Insert JSON data
attributes = {
    "color": "red",
    "size": "large",
    "tags": ["sale", "new", "featured"]
}
cursor.execute("""
    INSERT INTO products (name, attributes)
    VALUES (%s, %s)
""", ("T-Shirt", json.dumps(attributes)))

# Query JSON fields
cursor.execute("""
    SELECT
        name,
        JSON_EXTRACT(attributes, '$.color') as color,
        JSON_EXTRACT(attributes, '$.tags[0]') as first_tag
    FROM products
    WHERE JSON_CONTAINS(attributes, '"sale"', '$.tags')
""")

for product in cursor.fetchall():
    print(f"{product['name']}: {product['color']}")

# Update JSON
cursor.execute("""
    UPDATE products
    SET attributes = JSON_SET(attributes, '$.price', 29.99)
    WHERE id = %s
""", (1,))

conn.commit()
cursor.close()
conn.close()

Bulk Loading

import mysql.connector

conn = mysql.connector.connect(
    host="localhost",
    port=3306,
    user="admin",
    password="password",
    database="heliosdb",
    allow_local_infile=True
)
cursor = conn.cursor()

# Load data from CSV file
cursor.execute("""
    LOAD DATA LOCAL INFILE '/path/to/data.csv'
    INTO TABLE users
    FIELDS TERMINATED BY ','
    ENCLOSED BY '"'
    LINES TERMINATED BY '\n'
    IGNORE 1 ROWS
    (name, email, created_at)
""")

print(f"Loaded {cursor.rowcount} rows")
conn.commit()
cursor.close()
conn.close()

Error Handling

import mysql.connector
from mysql.connector import Error, IntegrityError, DatabaseError

def safe_query():
    try:
        conn = mysql.connector.connect(
            host="localhost",
            port=3306,
            user="admin",
            password="password",
            database="heliosdb"
        )
        cursor = conn.cursor()

        cursor.execute("INSERT INTO users (email) VALUES (%s)", ("duplicate@example.com",))
        conn.commit()

    except IntegrityError as e:
        print(f"Constraint violation: {e}")
        conn.rollback()
    except DatabaseError as e:
        print(f"Database error: {e}")
        conn.rollback()
    except Error as e:
        print(f"MySQL error: {e}")
    finally:
        if 'cursor' in locals():
            cursor.close()
        if 'conn' in locals():
            conn.close()

Last Updated: January 2026