当前位置:首页 > 编程技术 > 正文内容

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

yc8881年前 (2022-11-19)编程技术299

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

1、常见数据库

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

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

2、转移数据

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

# -*- 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转移数据库里数据的方法,希望对大家有所帮助。更多Python学习指路:python基础教程

本文教程操作环境:windows7系统、Python 2.7,DELL G3电脑。

本站发布的内容若侵犯到您的权益,请邮件联系站长删除,我们将及时处理!


从您进入本站开始,已表示您已同意接受本站【免责声明】中的一切条款!


本站大部分下载资源收集于网络,不保证其完整性以及安全性,请下载后自行研究。


本站资源仅供学习和交流使用,版权归原作者所有,请勿商业运营、违法使用和传播!请在下载后24小时之内自觉删除。


若作商业用途,请购买正版,由于未及时购买和付费发生的侵权行为,使用者自行承担,概与本站无关。


本文链接:https://www.10zhan.com/biancheng/10008.html

标签: Python
分享给朋友:

“【说站】python如何转移数据库里的数据” 的相关文章

【说站】Thymeleaf报错Error resolving template “XXX”

【说站】Thymeleaf报错Error resolving template “XXX”

修改了一下开源项目的目录结构访问突然报错Error resolving template “XXX”可能原因有如下三种:第一种可能:原因:在使用springboot的过程中,如果使用thymeleaf...

【说站】用一句话就可以去除宝塔面板操作上的二次验证

【说站】用一句话就可以去除宝塔面板操作上的二次验证

用过宝塔的朋友应该都会发现,现在宝塔面板有些鸡肋的功能,删除文件、删除数据库、删除站点等操作都需要做计算题!不仅加了几秒的延时等待,还无法跳过!这时候就会有朋友在想,如何去除宝塔面板的二次验证,此篇文...

【说站】C#在PDF中添加墨迹注释Ink Annotation的步骤详解

【说站】C#在PDF中添加墨迹注释Ink Annotation的步骤详解

PDF中的墨迹注释(Ink Annotation),表现为徒手涂鸦式的形状;该类型的注释,可任意指定形状顶点的位置及个数,通过指定的顶点,程序将连接各点绘制成平滑的曲线。下面,通过C#程序代码介绍如何...

【说站】Java从resources读取文件内容的方法有哪些

【说站】Java从resources读取文件内容的方法有哪些

本文主要介绍的是java读取resource目录下文件的方法,比如这是你的src目录的结构├── main│ ├── java│ │ └── ...

【说站】linux中redis如何以redis用户重启?

【说站】linux中redis如何以redis用户重启?

通过上图我们可以看到,目前状态是已经以 redis 用户启动着,我想修改下 redis 的密码,然后怎么以 redis 用户重启呢?redis 是 nologin 用户,不能通过 su redis 切...

【说站】使用systemctl配置dnspod-shell实现ddns

【说站】使用systemctl配置dnspod-shell实现ddns

这个是毛子路由器上用的脚本,由于碳云的nat服务器公网IP不断的变,因此只好通过ddns来稳定连接nat服务器了。顺便水一篇文章,大家新年快乐。使用前需要将域名添加到 DNSPod 中,并添加一条A记...