时间: 2020-09-3|tag:15次围观|0 条评论

Mysql 跨库数据迁移 — python 脚本插图

 

 

示例代码

import pymysqlclass DataMigrate:    def __init__(self, env):        self.num = 50        self.ENV = env        # From        self.db_from = self.connect_jingyi(1)        self.cursor_from = self.db_from.cursor()        self.from_sql = 'select first_project, status from product '        # To        self.db_to = self.connect_jingyi()        self.cursor_to = self.db_to.cursor()        self.to_sql = "insert into product_copy(first_project, status) value(%s,%s)"    def connect_jingyi(self, is_jingyi=0):        if is_jingyi:            if self.ENV == 'test':                return pymysql.connect(host='****',                                       port=3306,                                       user='***',                                       passwd='***',                                       db='from_db',                                       charset='utf8'                                       )            else:                return pymysql.connect(host='****',                                       port=3306,                                       user='***',                                       passwd='***',                                       db='from_db',                                       charset='utf8'                                       )        else:            if self.ENV == 'test':                return pymysql.connect(host='****',                                       port=3306,                                       user='***',                                       passwd='***',                                       db='to_db',                                       charset='utf8'                                       )            elif self.ENV == 'pre':                return pymysql.connect(host='*****',                                       port=3306,                                       user='***',                                       passwd='***',                                       db='to_db',                                       charset='utf8'                                       )    def migrate_date(self):        len_from = self.cursor_from.execute(self.from_sql)        for i in range(int(len_from / self.num)):            print(i)            data1 = self.cursor_from.fetchmany(self.num)            self.cursor_to.executemany(self.to_sql, data1)        data2 = self.cursor_from.fetchall()        self.cursor_to.executemany(self.to_sql, data2)        self.db_to.commit()        self.db_from.close()        self.db_to.close()if __name__ == '__main__':    data_migrate = DataMigrate('self-test')    data_migrate.migrate_date()

 

函数解析

fetchone() 获取游标下一条数据(元组)

fetchmany()  获取多条数据(元组列表)

fetchall()   获取所有数据(元组列表)

看下源码

...    def fetchone(self):        """Fetch the next row"""        self._check_executed()        if self._rows is None or self.rownumber >= len(self._rows):            return None        result = self._rows[self.rownumber]        self.rownumber += 1        return result    def fetchmany(self, size=None):        """Fetch several rows"""        self._check_executed()        if self._rows is None:            return ()        end = self.rownumber + (size or self.arraysize)        result = self._rows[self.rownumber:end]        self.rownumber = min(end, len(self._rows))        return result    def fetchall(self):        """Fetch all the rows"""        self._check_executed()        if self._rows is None:            return ()        if self.rownumber:            result = self._rows[self.rownumber:]        else:            result = self._rows        self.rownumber = len(self._rows)        return result...

 

文章转载于:https://www.cnblogs.com/kaituorensheng/p/13226557.html

原著是一个有趣的人,若有侵权,请通知删除

本博客所有文章如无特别注明均为原创。
复制或转载请以超链接形式注明转自起风了,原文地址《Mysql 跨库数据迁移 — python 脚本
   

还没有人抢沙发呢~