def connect_read_only(): from frappe.database import Database local.read_only_db = Database(local.conf.slave_host, local.conf.slave_db_name, local.conf.slave_db_password) # swap db connections local.master_db = local.db local.db = local.read_only_db
def connect(site=None, db_name=None): """Connect to site database instance. :param site: If site is given, calls `frappe.init`. :param db_name: Optional. Will use from `site_config.json`.""" from frappe.database import Database if site: init(site) local.db = Database(user=db_name or local.conf.db_name) set_user("Administrator")
def connect_replica(): from frappe.database import Database user = local.conf.db_name password = local.conf.db_password if local.conf.different_credentials_for_replica: user = local.conf.replica_db_name password = local.conf.replica_db_password local.replica_db = Database(host=local.conf.replica_host, user=user, password=password) # swap db connections local.primary_db = local.db local.db = local.replica_db
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, )
def migrate(): frappe.flags.mute_emails = True source = Database(user='******', password='******') # users = source.sql('select * from tabUser', as_dict=1) # for u in users: # frappe.get_doc(dict( # doctype='User', # name=u.name, # first_name=u.first_name, # last_name=u.last_name, # email=u.email # )).insert(ignore_if_duplicate=True) # print u.name # frappe.db.sql('delete from `tabService Provider`') # partners = source.sql('select * from `tabFrappe Partner`', as_dict=True) # for p in partners: # d = frappe.get_doc(dict( # doctype='Service Provider', # title=p.partner_name, # country=p.country, # image=p.logo, # introduction=p.introduction, # details=markdown(p.description), # address=p.partner_address, # discuss_ids=p.community_members, # website=p.partner_website, # github_id=p.github_id, # owner=p.owner, # creation=p.creation, # email= p.email, # phone=p.phone, # route=p.route, # show_in_website=p.show_in_website # )).insert(ignore_if_duplicate=True, ignore_mandatory=True) # print d.name # jobs = source.sql('select * from `tabFrappe Job`', as_dict=True) # frappe.db.sql('delete from `tabPortal Job`') # for j in jobs: # if not frappe.db.exists('Country', j.country): # frappe.get_doc(dict(doctype='Country', country_name=j.country)).insert() # d = frappe.get_doc(dict( # doctype='Portal Job', # title=j.job_title, # company_name=j.company_name, # country=j.country, # status='Open' if j.status=='Assigned' else j.status, # job_type={ # 'ERP Implementation': 'Implementation', # 'Core Development': 'Feature Development', # 'Website Development': 'Website Development', # 'Other': 'App Development' # }.get(j.job_type, None) or j.job_type, # description= markdown(j.job_detail), # owner=j.owner, # creation=j.creation, # route=j.route, # show_in_website=j.show_in_website # )).insert(ignore_if_duplicate=True, ignore_mandatory=True) # print d.name apps = source.sql('select * from `tabFrappe App`', as_dict=True) frappe.db.sql('delete from `tabFrappe App`') for a in apps: d = frappe.get_doc(dict( doctype='Frappe App', app_name = a.app_name, badge = a.badge, category = a.category, route = a.route, url = a.url, repository_url = a.repository_url, published = 1, description = markdown(a.description), owner=a.owner, creation=a.creation, )).insert(ignore_if_duplicate=True, ignore_mandatory=True) print d.name
def connect(self): if self.global_help_setup: self.db = Database(user=self.help_db_name, password=self.help_db_name) else: self.db = frappe.db
def migrate(): frappe.flags.mute_emails = True source = Database(user='******', password='******') users = source.sql('select * from tabUser', as_dict=1) for u in users: if validate_email_add(u.email.strip()): frappe.get_doc(dict( doctype='User', name=u.name, first_name=u.first_name, last_name=u.last_name, email=u.email )).insert(ignore_if_duplicate=True) print u.name print "sync auth" auth = source.sql('select * from __Auth where name != "Administrator"', as_dict=1) for user in auth: frappe.db.sql("""insert into __Auth (doctype, name, fieldname, password, salt, encrypted) values (%s, %s, %s, %s, %s, %s)""", (user.doctype, user.name, user.fieldname, user.password, user.salt, user.encrypted), debug=1) print user.name frappe.db.sql('delete from `tabService Provider`') partners = source.sql('select * from `tabFrappe Partner`', as_dict=True) for p in partners: d = frappe.get_doc(dict( doctype='Service Provider', title=p.partner_name, country=p.country, image=p.logo, introduction=p.introduction, details=markdown(p.description), address=p.partner_address, discuss_ids=p.community_members, website=p.partner_website, github_id=p.github_id, owner=p.owner, creation=p.creation, email= p.email, phone=p.phone, route=p.route, show_in_website=p.show_in_website )).insert(ignore_if_duplicate=True, ignore_mandatory=True) print d.name jobs = source.sql('select * from `tabFrappe Job`', as_dict=True) frappe.db.sql('delete from `tabPortal Job`') for j in jobs: if not frappe.db.exists('Country', j.country): frappe.get_doc(dict(doctype='Country', country_name=j.country)).insert() d = frappe.get_doc(dict( doctype='Portal Job', title=j.job_title, company_name=j.company_name, country=j.country, status='Open' if j.status=='Assigned' else j.status, job_type={ 'ERP Implementation': 'Implementation', 'Core Development': 'Feature Development', 'Website Development': 'Website Development', 'Other': 'App Development' }.get(j.job_type, None) or j.job_type, description= markdown(j.job_detail), owner=j.owner, creation=j.creation, route=j.route, show_in_website=j.show_in_website )).insert(ignore_if_duplicate=True, ignore_mandatory=True) print d.name apps = source.sql('select * from `tabFrappe App`', as_dict=True) frappe.db.sql('delete from `tabFrappe App`') for a in apps: d = frappe.get_doc(dict( doctype='Frappe App', app_name = a.app_name, badge = a.badge, category = a.category, route = a.route, url = a.url, repository_url = a.repository_url, published = 1, description = markdown(a.description), owner=a.owner, creation=a.creation, )).insert(ignore_if_duplicate=True, ignore_mandatory=True) print d.name
def connect(self): self.db = Database(user=help_db_name, password=help_db_name)