52 lines
No EOL
1.2 KiB
Python
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 = {} |