Merge pull request #7326 from oshosanya/allow-database-port-config

feat: Allow user to specify database port
This commit is contained in:
Rushabh Mehta 2019-04-25 11:40:54 +05:30 committed by GitHub
commit fce9989e1f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 12 additions and 11 deletions

View file

@ -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

View file

@ -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)
return frappe.database.mariadb.setup_db.setup_help_database(help_db_name)

View file

@ -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

View file

@ -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;")]
return [d[0] for d in self.sql("SHOW DATABASES;")]

View file

@ -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))