python数据库整合_python 数据库处理 合并数据库

这篇博客介绍了如何使用Python的`configparser`和`records`库来整合和合并多个MySQL数据库。作者提供了配置文件示例,并展示了如何从配置文件中读取数据库连接信息,以及如何连接和迁移数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

创建 config.ini `#需要合并的服务器 最大2 db_app_count = 1

需要合并资源1

db_host1 = 127.0.0.1 db_user1 = root db_pass1 = root

需要合并资源2

db_host2 = 127.0.0.1 db_user2 = root db_pass2 = root

目的地

db_host = 127.0.0.1 db_user = root db_pass = root #需要合并的表 db_list = []

#新服serverId server_id = 8

新服数据库目的地

db_host1 = 127.0.0.1 db_user1 = root db_pass1 =root #用户登录数据login db_host2 = 127.0.0.1 db_user2 = root db_pass2 = root

资源

db_host = 127.0.0.1 db_user = root db_pass = root #需要导入资源 db_list = [] ` 没怎么写过,网上查了下语法,可能不规范,大致就是这个样子的 linux一般默认版本为2.需要更新python版本到3. 需要安装pip3 命令 需要 pip3安装records pymysql 两个库 数据库信息,表信息,通过配置文件config配置完成

#! /usr/bin/env python3

import configparser

import os

import records

def init_config():

global db_app_count

global db_host1

global db_user1

global db_pass1

global db_host2

global db_user2

global db_pass2

global db_host

global db_user

global db_pass

global db_list

root_dir = os.path.abspath(".")

# root_dir = os.path.dirname(dir) # 获取当前文件所在目录的上一级目录,即项目所在目录E:\Crawler

configpath = os.path.join(root_dir, "config.ini")

cf = configparser.ConfigParser()

cf.read(configpath, 'UTF-8') # 读取配置文件

db_app_count = cf.get('G2R', 'db_app_count')

db_host1 = cf.get('G2R', 'db_host1')

db_user1 = cf.get('G2R', 'db_user1')

db_pass1 = cf.get('G2R', 'db_pass1')

db_host2 = cf.get('G2R', 'db_host2')

db_user2 = cf.get('G2R', 'db_user2')

db_pass2 = cf.get('G2R', 'db_pass')

db_host = cf.get('G2R', 'db_host')

db_user = cf.get('G2R', 'db_user')

db_pass = cf.get('G2R', 'db_pass')

db_list = eval(cf.get('G2R', 'db_list'))

def connectDB():

global SOURCE_DB

global APP_DB1

global APP_DB2

APP_DB1 = records.Database('mysql+pymysql://' + db_user1 + ':' + db_pass1 + '@' + db_host1 + '/gs?charset=utf8mb4')

if db_app_count == 2:

APP_DB2 = records.Database(

'mysql+pymysql://' + db_user2 + ':' + db_pass2 + '@' + db_host2 + '/gs?charset=utf8mb4')

SOURCE_DB = records.Database('mysql+pymysql://' + db_user + ':' + db_pass + '@' + db_host + '/rs?charset=utf8mb4')

print("init DB connection finish")

def scan_data_Info():

for table in db_list:

workRows = APP_DB1.query("select * from " + table)

insert_info(workRows, table)

print("APP_DB1 scan company finish")

if db_app_count == 2:

workRows = APP_DB2.query("select * from " + table)

insert_info(workRows, table)

print("APP_DB2 scan company finish")

def insert_info(workRows, table):

if len(workRows.dataset._data) > 0:

param = ','.join(workRows.dataset.headers)

names = ',:'.join(workRows.dataset.headers)

names = ":" + names

ret = SOURCE_DB.bulk_query(

'INSERT INTO ' + table + ' (' + param + ')VALUE(' + names + ')', workRows.dataset.dict);

print(table)

print(len(workRows))

if __name__ == "__main__":

try:

init_config()

connectDB()

scan_data_Info()

except Exception as e:

print(e)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值