3M/cef_3M/sql.py

52 lines
No EOL
1.2 KiB
Python

import pymysql
import config
from typing import Tuple
pymysql.install_as_MySQLdb()
import MySQLdb as maraidb
DB: pymysql = maraidb.connect(user=config.MARIADB_USER, password=config.MARIADB_PASSWORD, db=config.MARIADB_DB, autocommit=True)
DB.autocommit(True)
def reconnect(f):
def wrap(*args, **kwargs):
DB.ping()
return f(*args, **kwargs)
return wrap
@reconnect
def SqlExecute(query, *args):
cursor = DB.cursor(pymysql.cursors.DictCursor)
cursor.execute(query, args)
cursor.close()
return cursor.lastrowid
@reconnect
def SqlExecuteFetchOne(query, *args):
cursor = DB.cursor(pymysql.cursors.DictCursor)
cursor.execute(query, args)
row = cursor.fetchone()
cursor.close()
return row
@reconnect
def MultipleSqlExecuteFetchOne(*queries: Tuple[str, tuple]):
cursor = DB.cursor(pymysql.cursors.DictCursor)
ret = []
for query, args in queries:
cursor.execute(query, args)
ret.append(cursor.fetchone())
cursor.close()
return ret
@reconnect
def SqlExecuteFetchAll(query, *args):
cursor = DB.cursor(pymysql.cursors.DictCursor)
cursor.execute(query, args)
rows = cursor.fetchall()
cursor.close()
return rows
CACHE = {}