导语:
本文主要介绍了关于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电脑。
本文为原创文章,版权归知行编程网所有,欢迎分享本文,转载请保留出处!
你可能也喜欢
- ♥ 如何在python中连接到telnet11/30
- ♥ python是用什么语言写的?09/05
- ♥ 如何在短时间内学好python11/27
- ♥ python中如何给变量赋值09/26
- ♥ 什么是 python heapq12/29
- ♥ python生成器如何解析11/07
内容反馈