diff --git a/frappe/__init__.py b/frappe/__init__.py index 9084200ee6..1717a430e2 100644 --- a/frappe/__init__.py +++ b/frappe/__init__.py @@ -191,8 +191,8 @@ def connect(site=None, db_name=None): def connect_read_only(): from frappe.database import get_db - local.read_only_db = get_db(local.conf.slave_host, local.conf.slave_db_name, - local.conf.slave_db_password) + local.read_only_db = get_db(host=local.conf.slave_host, user=local.conf.slave_db_name, + password=local.conf.slave_db_password) # swap db connections local.master_db = local.db diff --git a/frappe/database/__init__.py b/frappe/database/__init__.py index f00c6bf0b4..9d05223044 100644 --- a/frappe/database/__init__.py +++ b/frappe/database/__init__.py @@ -23,14 +23,14 @@ def drop_user_and_database(db_name, root_login=None, root_password=None): import frappe.database.mariadb.setup_db return frappe.database.mariadb.setup_db.drop_user_and_database(db_name, root_login, root_password) -def get_db(host=None, user=None, password=None): +def get_db(host=None, user=None, password=None, port=None): import frappe if frappe.conf.db_type == 'postgres': import frappe.database.postgres.database - return frappe.database.postgres.database.PostgresDatabase(host, user, password) + return frappe.database.postgres.database.PostgresDatabase(host, user, password, port=port) else: import frappe.database.mariadb.database - return frappe.database.mariadb.database.MariaDBDatabase(host, user, password) + return frappe.database.mariadb.database.MariaDBDatabase(host, user, password, port=port) def setup_help_database(help_db_name): import frappe @@ -39,4 +39,4 @@ def setup_help_database(help_db_name): return frappe.database.postgres.setup_db.setup_help_database(help_db_name) else: import frappe.database.mariadb.setup_db - return frappe.database.mariadb.setup_db.setup_help_database(help_db_name) \ No newline at end of file + return frappe.database.mariadb.setup_db.setup_help_database(help_db_name) diff --git a/frappe/database/database.py b/frappe/database/database.py index c810dd5439..da8931ab5e 100644 --- a/frappe/database/database.py +++ b/frappe/database/database.py @@ -46,9 +46,10 @@ class Database(object): class InvalidColumnName(frappe.ValidationError): pass - def __init__(self, host=None, user=None, password=None, ac_name=None, use_default=0): + def __init__(self, host=None, user=None, password=None, ac_name=None, use_default=0, port=None): self.setup_type_map() self.host = host or frappe.conf.db_host or 'localhost' + self.port = port or frappe.conf.db_port or '' self.user = user or frappe.conf.db_name self.db_name = frappe.conf.db_name self._conn = None diff --git a/frappe/database/mariadb/database.py b/frappe/database/mariadb/database.py index b59a8fe0eb..e197349bae 100644 --- a/frappe/database/mariadb/database.py +++ b/frappe/database/mariadb/database.py @@ -81,11 +81,11 @@ class MariaDBDatabase(Database): if usessl: conn = pymysql.connect(self.host, self.user or '', self.password or '', - charset='utf8mb4', use_unicode = True, ssl=ssl_params, + 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 '', - charset='utf8mb4', use_unicode = True, conv = conversions, + port=self.port, charset='utf8mb4', use_unicode = True, conv = conversions, local_infile = frappe.conf.local_infile) # MYSQL_OPTION_MULTI_STATEMENTS_OFF = 1 @@ -283,4 +283,4 @@ class MariaDBDatabase(Database): self.begin() def get_database_list(self, target): - return [d[0] for d in self.sql("SHOW DATABASES;")] \ No newline at end of file + return [d[0] for d in self.sql("SHOW DATABASES;")] diff --git a/frappe/database/postgres/database.py b/frappe/database/postgres/database.py index ef4b220483..036ee3f34a 100644 --- a/frappe/database/postgres/database.py +++ b/frappe/database/postgres/database.py @@ -64,7 +64,7 @@ class PostgresDatabase(Database): def get_connection(self): # warnings.filterwarnings('ignore', category=psycopg2.Warning) - conn = psycopg2.connect('host={} dbname={}'.format(self.host, self.user)) + conn = psycopg2.connect('host={} dbname={} port={}'.format(self.host, self.user, self.port)) conn.set_isolation_level(ISOLATION_LEVEL_AUTOCOMMIT) # TODO: Remove this # conn = psycopg2.connect('host={} dbname={} user={} password={}'.format(self.host, # self.user, self.user, self.password))