前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【说站】python如何转移数据库里的数据

【说站】python如何转移数据库里的数据

作者头像
很酷的站长
发布2022-11-23 14:01:09
7770
发布2022-11-23 14:01:09
举报
文章被收录于专栏:站长的编程笔记

python如何转移数据库里的数据

1、常见数据库

(1)Scikit-learn:需要复盖特征工程、模型训练和模型测试所有功能的程序库,Scikit-learn是最好的选择。这个优秀的免费软件可以提供机器学习和数据挖掘所需的所有工具,现在是python机器学习的标准库,建议使用成熟的机器学习算法。

(2)NLTK:虽然不是机器学习的程序库,但它是自然语言处理所必需的库。除了文本处理功能之外,它还包括聚类、分词、词干提取、标记、分析等大量数据集和其他关于词法的资源。

2、转移数据

基于Python2.7的版本环境,Python实现了数据库的跨服务器迁移,每次提交查询都要5000条,代码中每个查询提交的数量可以自己改变。

代码语言:javascript
复制
# -*- coding: utf-8 -*-
 
import MySQLdb
import time
import warnings
 
warnings.filterwarnings("ignore")
 
 
class ConnectMysql(object):
    def __init__(self):
#         这里设置分页查询, 每页查询多少数据
        self.page_size = 5000
 
    def getTable(self):
        conn = MySQLdb.connect(
            host="***.***.**.**",
            user="****",
            passwd="*************",
            db='****',
            charset='utf8'
        )
        conn_local = MySQLdb.connect(
            host="********************************",
            user="**********",
            passwd="********",
            db='*******',
            charset='utf8'
        )
        cur = conn.cursor()
        cur_local = conn_local.cursor()
        cur.execute('show tables')
        tables = cur.fetchall()
        for table in tables:
            print str(table[0]).lower()
            # 需要迁移的数据库查询表的列数
            cur.execute("SELECT COUNT(*) FROM information_schema.COLUMNS WHERE table_schema='china' AND table_name='" + table[0] + "'")
            table_col_count = cur.fetchone()
            # print table_col_count[0]
            # 需要迁移的数据库查询表的结构
            cur.execute('show create table ' + table[0])
            result = cur.fetchall()
            create_sql = result[0][1]
            # 查询需要迁移的数据库表的数据条数
            cur.execute('select count(*) from ' + table[0])
            total = cur.fetchone()
            page = total[0] / self.page_size
            page1 = total[0] % self.page_size
            if page1 != 0:
                page = page + 1
 
            # 阿里云数据库创建表
            cur_local.execute("SELECT table_name FROM information_schema.`TABLES` WHERE table_schema='user' AND table_name='" + str(table[0]).lower() + "'")
            table_name = cur_local.fetchone()
            if table_name is None:
                cur_local.execute(create_sql)
            for p in range(0, page):
                while True:
                    try:
                        print '开始', table[0], '的第', p + 1, '页查询'
                        if p == 0:
                            limit_param = ' limit ' + str(p * self.page_size) + ',' + str(self.page_size)
                        else:
                            limit_param = ' limit ' + str(p * self.page_size + 1) + ',' + str(self.page_size)
                        cur.execute('select * from ' + table[0] + limit_param)
                        inserts = cur.fetchall()
                        print '查询成功'
                        param = ''
                        for i in range(0, table_col_count[0]):
                            param = param + '%s,'
                        print '开始插入'
                        cur_local.executemany('replace into ' + table[0] + ' values (' + param[0:-1] + ')', inserts)
                        print table[0], '的第', p + 1, '页, 插入完成, 还有', page - p - 1, '页, 任重而道远'
                        conn_local.commit()
                        break
                    except Exception as e:
                        print e
                        time.sleep(60)
                        cur = conn.cursor()
                        cur_local = conn_local.cursor()
                print table[0], ' 插入完成'
                print '\n \n ======================================================================== \n\n'
        cur_local.close()
        conn_local.close()
        cur.close()
        conn.close()
 
 
if __name__ == '__main__':
    conn_mysql = ConnectMysql()
    conn_mysql.getTable()

以上就是python转移数据库里数据的方法,希望对大家有所帮助。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • python如何转移数据库里的数据
相关产品与服务
NLP 服务
NLP 服务(Natural Language Process,NLP)深度整合了腾讯内部的 NLP 技术,提供多项智能文本处理和文本生成能力,包括词法分析、相似词召回、词相似度、句子相似度、文本润色、句子纠错、文本补全、句子生成等。满足各行业的文本智能需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档