知行编程网知行编程网  2022-10-18 20:30 知行编程网 隐藏边栏  15 
文章评分 0 次,平均分 0.0
导语: 本文主要介绍了关于python如何转移数据库里的数据的相关知识,包括python把获得的数据放在一个表格里,以及python用什么数据库最好这些编程知识,希望对大家有参考作用。

python如何在数据库中传输数据


1、常见数据库

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

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


2、转移数据

Python基于Python 2.7的版本环境,实现了数据库的跨服务器迁移。每次提交 5,000 个查询时,你可以更改代码中每个查询的提交查询数。

# -*- 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()


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

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

知行编程网
知行编程网 关注:1    粉丝:1
这个人很懒,什么都没写
扫一扫二维码分享