title: MySql (or MariaDB) in Python 1 tags: mysql python Mysql or more likely the compatible fork mariadb. # Connect and Query 1 ```py import mysql.connector from mysql.connector.errors import DatabaseError try: mydb = mysql.connector.connect(host=HOST,user=USER,password=PASS,database=DB) except DatabaseError as e: eprint(f"DatabaseError(connect): {e}",) exit(1) sql = """SELECT... FROM table... """ cursor = mydb.cursor() cursor.execute("SELECT * FROM table WHERE boing = %s AND snarf = %s ",(param,param2)) a = cursor.fetchall() if len(a) > 0: # found something else: # found nothing ``` # Parameters ``` a = "hello" b = "world" cur.execute("INSERT INTO mytable ( a, b ) VALUES ( %s, %s )",(a,b)) ``` # Worked Example Find videos of a given duration. ```py import sys import mysql.connector from mysql.connector.errors import DatabaseError import json import argparse from jda_time import hms def main(): global mydb try: mydb = mysql.connector.connect(host="localhost",user="me",password="turnip",database="movies") except DatabaseError as e: print(f"DatabaseError(connect): {e}",file=sys.stderr) exit(1) parser = argparse.ArgumentParser( prog='within', description='find movies with given duration') parser.add_argument('rest',nargs="*") ns = parser.parse_args() rest = ns.rest try: if len(rest) == 1: shortest = hms(rest[0]) longest = 24*3600 elif len(rest) == 2: shortest, longest = [ hms(x) for x in rest ] else: raise ValueError() except ValueError as e: print(f"Invalid arguments") cur = mydb.cursor() cur.execute(""" SELECT path, duration_hms FROM movies WHERE duration >= %s AND duration <= %s ORDER BY duration """,(shortest,longest)) for row in cur.fetchall(): print(row[0],row[1]) if __name__ == "__main__": main() ```