Exemple #1
0
    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
Exemple #2
0
	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 = []
Exemple #3
0
	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 = []
Exemple #4
0
    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
Exemple #5
0
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,
    )
Exemple #6
0
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