57 lines
1.5 KiB
Python
57 lines
1.5 KiB
Python
"""Module with cursor implementation."""
|
|
|
|
import json
|
|
from pathlib import Path
|
|
from .error import Error
|
|
|
|
|
|
config_file = Path(__file__).parent / "cursor_config.json"
|
|
|
|
|
|
class Cursor:
|
|
"""Cursor of a MySQL connection."""
|
|
|
|
def __init__(self, raise_err: bool = True):
|
|
if self._raise_error_in_init and raise_err:
|
|
raise Error
|
|
|
|
def execute(self, *args, **kwargs) -> None:
|
|
"""Mock execute a query."""
|
|
|
|
if self._raise_error:
|
|
raise Error
|
|
|
|
def executemany(self, *args, **kwargs) -> None:
|
|
"""Mock execute a query multiple times with different data."""
|
|
|
|
if self._raise_error:
|
|
raise Error
|
|
|
|
@property
|
|
def _raise_error(self):
|
|
return self._read_configs()["raise_error"]
|
|
|
|
@property
|
|
def _raise_error_in_init(self):
|
|
return self._read_configs()["raise_error_in_init"]
|
|
|
|
@_raise_error.setter
|
|
def _raise_error(self, value: int):
|
|
data = self._read_configs()
|
|
data["raise_error"] = value
|
|
self._save_configs(data)
|
|
|
|
@_raise_error_in_init.setter
|
|
def _raise_error_in_init(self, value: int):
|
|
data = self._read_configs()
|
|
data["raise_error_in_init"] = value
|
|
self._save_configs(data)
|
|
|
|
def _read_configs(self):
|
|
with open(config_file, "r", encoding="utf-8") as f:
|
|
return json.loads(f.read())
|
|
|
|
def _save_configs(self, data):
|
|
with open(config_file, "w", encoding="utf-8") as f:
|
|
f.write(json.dumps(data, indent=4))
|