def get_connection(self): usessl = 0 if frappe.conf.db_ssl_ca and frappe.conf.db_ssl_cert and frappe.conf.db_ssl_key: usessl = 1 ssl_params = { 'ca': frappe.conf.db_ssl_ca, 'cert': frappe.conf.db_ssl_cert, 'key': frappe.conf.db_ssl_key } conversions.update({ FIELD_TYPE.NEWDECIMAL: float, FIELD_TYPE.DATETIME: get_datetime, UnicodeWithAttrs: conversions[str] }) conn = pymysql.connect(user=self.user or '', password=self.password or '', host=self.host, port=self.port, charset='utf8mb4', use_unicode=True, ssl=ssl_params if usessl else None, conv=conversions, local_infile=frappe.conf.local_infile) # MYSQL_OPTION_MULTI_STATEMENTS_OFF = 1 # # self._conn.set_server_option(MYSQL_OPTION_MULTI_STATEMENTS_OFF) if self.user != 'root': conn.select_db(self.user) return conn
def connect(self): """Connects to a database as set in `site_config.json`.""" warnings.filterwarnings('ignore', category=pymysql.Warning) usessl = 0 if frappe.conf.db_ssl_ca and frappe.conf.db_ssl_cert and frappe.conf.db_ssl_key: usessl = 1 self.ssl = { 'ca':frappe.conf.db_ssl_ca, 'cert':frappe.conf.db_ssl_cert, 'key':frappe.conf.db_ssl_key } conversions.update({ FIELD_TYPE.NEWDECIMAL: float, FIELD_TYPE.DATETIME: get_datetime, TimeDelta: conversions[binary_type], UnicodeWithAttrs: conversions[text_type] }) if usessl: self._conn = pymysql.connect(self.host, self.user or '', self.password or '', charset='utf8mb4', use_unicode = True, ssl=self.ssl, conv = conversions) else: self._conn = pymysql.connect(self.host, self.user or '', self.password or '', charset='utf8mb4', use_unicode = True, conv = conversions) # MYSQL_OPTION_MULTI_STATEMENTS_OFF = 1 # # self._conn.set_server_option(MYSQL_OPTION_MULTI_STATEMENTS_OFF) self._cursor = self._conn.cursor() if self.user != 'root': self.use(self.user) frappe.local.rollback_observers = []
def get_connection(self): warnings.filterwarnings('ignore', category=pymysql.Warning) usessl = 0 if frappe.conf.db_ssl_ca and frappe.conf.db_ssl_cert and frappe.conf.db_ssl_key: usessl = 1 ssl_params = { 'ca': frappe.conf.db_ssl_ca, 'cert': frappe.conf.db_ssl_cert, 'key': frappe.conf.db_ssl_key } conversions.update({ FIELD_TYPE.NEWDECIMAL: float, FIELD_TYPE.DATETIME: get_datetime, UnicodeWithAttrs: conversions[text_type] }) if PY2: conversions.update({TimeDelta: conversions[binary_type]}) self.user = getattr(frappe.conf, "db_user", None) or frappe.conf.db_name if usessl: conn = pymysql.connect(self.host, getattr(frappe.conf, "db_user", None) or self.user or '', self.password or '', database=frappe.conf.db_name, port=self.port, charset='utf8mb4', use_unicode=True, ssl=ssl_params, conv=conversions, local_infile=frappe.conf.local_infile) else: conn = pymysql.connect(self.host, self.user or '', self.password or '', port=self.port, charset='utf8mb4', use_unicode=True, conv=conversions, local_infile=frappe.conf.local_infile) # MYSQL_OPTION_MULTI_STATEMENTS_OFF = 1 # # self._conn.set_server_option(MYSQL_OPTION_MULTI_STATEMENTS_OFF) print(str(frappe.conf.db_name)) if self.user != 'root': conn.select_db(frappe.conf.db_name) return conn
def get_conn(): db_instance = Database() conversions.update({ FIELD_TYPE.NEWDECIMAL: float, FIELD_TYPE.DATETIME: frappe.utils.get_datetime, UnicodeWithAttrs: conversions[text_type] }) return pymysql.connect( db_instance.host, db_instance.user, db_instance.password, charset='utf8mb4', use_unicode=True, conv=conversions, local_infile=db_instance.local_infile, db=db_instance.user, )
import frappe import pymysql import sqlalchemy.pool as pool from six import text_type from markdown2 import UnicodeWithAttrs from pymysql.constants import FIELD_TYPE from pymysql.converters import conversions from frappe.database import Database conversions.update({ FIELD_TYPE.NEWDECIMAL: float, FIELD_TYPE.DATETIME: frappe.utils.get_datetime, UnicodeWithAttrs: conversions[text_type] }) con_pool = None class PooledDatabase(Database): def __init__(self, host=None, user=None, password=None, db_name=None, autocommit=False): self.host = host or frappe.conf.db_host or 'localhost' self.user = user or frappe.conf.db_name self.password = password or frappe.conf.db_password self.db_name = db_name or self.user self.autocommit = autocommit self._conn = None