Table des matières

PyMySQL


Installation

pip install PyMySQL

Exemple minimaliste

import pymysql.cursors
 
# Connect to the database
connection = pymysql.connect(host='localhost',
                             user='user',
                             password='passwd',
                             db='db',
                             charset='utf8mb4',
                             cursorclass=pymysql.cursors.DictCursor)
 
try:
    with connection.cursor() as cursor:
        # Create a new record
        sql = "INSERT INTO `users` (`email`, `password`) VALUES (%s, %s)"
        cursor.execute(sql, ('webmaster@python.org', 'very-secret'))
 
    # connection is not autocommit by default. So you must commit to save
    # your changes.
    connection.commit()
 
    with connection.cursor() as cursor:
        # Read a single record
        sql = "SELECT `id`, `password` FROM `users` WHERE `email`=%s"
        cursor.execute(sql, ('webmaster@python.org',))
        result = cursor.fetchone()
        print(result)
finally:
    connection.close()

Fetch all

cursor.execute("SELECT * FROM bookmark WHERE box_id = " + str(box['id']))
bookmarks = cursor.fetchall()
 
for bookmark in bookmarks:
    print(bookmark)

Batch requêtes

data = [
  ('Jane', date(2005, 2, 12)),
  ('Joe', date(2006, 5, 23)),
  ('John', date(2010, 10, 3)),
]
stmt = "INSERT INTO employees (first_name, hire_date) VALUES (%s, %s)"
cursor.executemany(stmt, data)

Forcer SSL

Ajouter ssl={'ca': None} comme paramètre de pymysql.connect().

Si une erreur du type SSL: Unsupported protocol apparaît, une solution consiste à placer ces valeurs dans le fichier /etc/ssl/openssl.cnf (source):

[system_default_sect]
MinProtocol = None
CipherString = DEFAULT