python(19) : sqlserver数据克隆

只克隆数据, 需要声明表名和表字段

注意: 会清除目标表的数据

代码

# -*- coding: utf-8 -*-

# ====> 从源数据库克隆到目标数据库 <==== #

import pyodbc

driver = '{' + pyodbc.drivers()[0] + "}"

source_conn = pyodbc.connect(
    f'DRIVER={driver};SERVER=127.0.0.1,1433;DATABASE=test;UID=root;PWD=123456')
source_cursor = source_conn.cursor()

target_conn = pyodbc.connect(
    f'DRIVER={driver};SERVER=127.0.0.1,1433;DATABASE=prod;UID=root;123456')
target_cursor = target_conn.cursor()

tables = [
    ['t1', 'id,create_time,modify_time,name,age'],
    ['t2', 'id,create_time,modify_time,name2,age2'],
]

# 清空目标表
for t in tables:
    target_cursor.execute(f'truncate table {t[0]}')
target_conn.commit()

# 克隆数据
for t in tables:
    target_cursor.execute(f'set identity_insert {t[0]} on')
    source_cursor.execute(f'SELECT {t[1]} FROM {t[0]}')
    rows = source_cursor.fetchall()
    print(f'[{t[0]}]-{len(rows)}')
    data = []
    f_count = len(t[1].split(','))
    wh = ",".join(["?"] * f_count)
    for row in rows:
        d = ()
        for r in row:
            d = d + (r,)
        data.append(d)
    target_cursor.executemany(f'INSERT INTO {t[0]} ({t[1]}) VALUES ({wh})', data)
    target_cursor.execute(f'set identity_insert {t[0]} off')

# 提交并关闭连接
target_conn.commit()
target_cursor.close()
target_conn.close()

source_cursor.close()
source_conn.close()

依赖

pip3 install pyodbc -i https://mirrors.aliyun.com/pypi/simple/ requests

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值