Dup Ver Goto 📝

Simple Mysql Wrapper 01

To
71 lines, 164 words, 1733 chars Page 'SimpleWrapper_01' does not exist.

Simple Mysql Wrapper 01

This is a simple wrapper for mysql (and I have a simliar one for postgresql), so that for simple stuff, you can write simply:

from jda_mysql import Mysql1

class App(Mysql1):
  def go(self):
    cur = self.cur
    cur.execute("SELECT path, filename, size_bytes FROM table LIMIT 10")
    self.show_table(cur,title="My Files")

App(host="servername",dbname="files").main()

jda_mysql.py

import mysql.connector
from mysql.connector.errors import DatabaseError
import sys

try:
  from rich.table import Table
  from rich.console import Console
except ModuleNotFoundError:
  pass


class Mysql1:
  def __init__(self,host="localhost",user="mrturnip",password="floink",dbname="",**kw):
    self.host = host
    self.user = user
    self.password = password
    self.dbname = dbname
    self.kw = kw

  def show_table(self,cur,title=None):
    try:
      table = Table(title=title)
      console = Console()
    except NameError:
      print(f"Table unavailable, need rich module",file=sys.stderr)
      return
    colnames = cur.column_names
    for col in colnames:
      table.add_column(col)
    for row in cur:
      table.add_row(*map(str,row))
    console.print(table)

  def go(self):
    print("Need to override go()")

  def main(self):
    try:
      self.db = mysql.connector.connect(host=self.host,user=self.user,password=self.password,database=self.dbname)
    except DatabaseError as e:
      print(f"DatabaseError(connect): {e}",file=sys.stderr)
      return 1
    try:
      self.cur = self.db.cursor()
      self.go()
    except DatabaseError as e:
      print(f"DatabaseError(go): {e}",file=sys.stderr)
      return 1
    self.db.commit()
    self.db.close()
    return 0