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

Python (187) 2023-04-21 04:11:40

1、常见数据库

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

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

2、转移数据

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

纯文本
复制到剪贴板
在新窗口中打开代码
EnlighterJS 3 Syntax Highlighter
#-*-coding:utf-8-*-
importMySQLdb
importtime
importwarnings
warnings.filterwarnings("ignore")
classConnectMysql(object):
def__init__(self):
#这里设置分页查询,每页查询多少数据
self.page_size=5000
defgetTable(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('showtables')
tables=cur.fetchall()
fortableintables:
printstr(table[0]).lower()
#需要迁移的数据库查询表的列数
cur.execute("SELECTCOUNT(*)FROMinformation_schema.COLUMNSWHEREtable_schema='china'ANDtable_name='"+table[0]+"'")
table_col_count=cur.fetchone()
#printtable_col_count[0]
#需要迁移的数据库查询表的结构
cur.execute('showcreatetable'+table[0])
result=cur.fetchall()
create_sql=result[0][1]
#查询需要迁移的数据库表的数据条数
cur.execute('selectcount(*)from'+table[0])
total=cur.fetchone()
page=total[0]/self.page_size
page1=total[0]%self.page_size
ifpage1!=0:
page=page+1
#阿里云数据库创建表
cur_local.execute("SELECTtable_nameFROMinformation_schema.`TABLES`WHEREtable_schema='user'ANDtable_name='"+str(table[0]).lower()+"'")
table_name=cur_local.fetchone()
iftable_nameisNone:
cur_local.execute(create_sql)
forpinrange(0,page):
whileTrue:
try:
print'开始',table[0],'的第',p+1,'页查询'
ifp==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=''
foriinrange(0,table_col_count[0]):
param=param+'%s,'
print'开始插入'
cur_local.executemany('replaceinto'+table[0]+'values('+param[0:-1]+')',inserts)
printtable[0],'的第',p+1,'页,插入完成,还有',page-p-1,'页,任重而道远'
conn_local.commit()
break
exceptExceptionase:
printe
time.sleep(60)
cur=conn.cursor()
cur_local=conn_local.cursor()
printtable[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()
#-*-coding:utf-8-*- importMySQLdb importtime importwarnings warnings.filterwarnings("ignore") classConnectMysql(object): def__init__(self): #这里设置分页查询,每页查询多少数据 self.page_size=5000 defgetTable(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('showtables') tables=cur.fetchall() fortableintables: printstr(table[0]).lower() #需要迁移的数据库查询表的列数 cur.execute("SELECTCOUNT(*)FROMinformation_schema.COLUMNSWHEREtable_schema='china'ANDtable_name='"+table[0]+"'") table_col_count=cur.fetchone() #printtable_col_count[0] #需要迁移的数据库查询表的结构 cur.execute('showcreatetable'+table[0]) result=cur.fetchall() create_sql=result[0][1] #查询需要迁移的数据库表的数据条数 cur.execute('selectcount(*)from'+table[0]) total=cur.fetchone() page=total[0]/self.page_size page1=total[0]%self.page_size ifpage1!=0: page=page+1 #阿里云数据库创建表 cur_local.execute("SELECTtable_nameFROMinformation_schema.`TABLES`WHEREtable_schema='user'ANDtable_name='"+str(table[0]).lower()+"'") table_name=cur_local.fetchone() iftable_nameisNone: cur_local.execute(create_sql) forpinrange(0,page): whileTrue: try: print'开始',table[0],'的第',p+1,'页查询' ifp==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='' foriinrange(0,table_col_count[0]): param=param+'%s,' print'开始插入' cur_local.executemany('replaceinto'+table[0]+'values('+param[0:-1]+')',inserts) printtable[0],'的第',p+1,'页,插入完成,还有',page-p-1,'页,任重而道远' conn_local.commit() break exceptExceptionase: printe time.sleep(60) cur=conn.cursor() cur_local=conn_local.cursor() printtable[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()
#-*-coding:utf-8-*-

importMySQLdb
importtime
importwarnings

warnings.filterwarnings("ignore")


classConnectMysql(object):
def__init__(self):
#这里设置分页查询,每页查询多少数据
self.page_size=5000

defgetTable(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('showtables')
tables=cur.fetchall()
fortableintables:
printstr(table[0]).lower()
#需要迁移的数据库查询表的列数
cur.execute("SELECTCOUNT(*)FROMinformation_schema.COLUMNSWHEREtable_schema='china'ANDtable_name='"+table[0]+"'")
table_col_count=cur.fetchone()
#printtable_col_count[0]
#需要迁移的数据库查询表的结构
cur.execute('showcreatetable'+table[0])
result=cur.fetchall()
create_sql=result[0][1]
#查询需要迁移的数据库表的数据条数
cur.execute('selectcount(*)from'+table[0])
total=cur.fetchone()
page=total[0]/self.page_size
page1=total[0]%self.page_size
ifpage1!=0:
page=page+1

#阿里云数据库创建表
cur_local.execute("SELECTtable_nameFROMinformation_schema.`TABLES`WHEREtable_schema='user'ANDtable_name='"+str(table[0]).lower()+"'")
table_name=cur_local.fetchone()
iftable_nameisNone:
cur_local.execute(create_sql)
forpinrange(0,page):
whileTrue:
try:
print'开始',table[0],'的第',p+1,'页查询'
ifp==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=''
foriinrange(0,table_col_count[0]):
param=param+'%s,'
print'开始插入'
cur_local.executemany('replaceinto'+table[0]+'values('+param[0:-1]+')',inserts)
printtable[0],'的第',p+1,'页,插入完成,还有',page-p-1,'页,任重而道远'
conn_local.commit()
break
exceptExceptionase:
printe
time.sleep(60)
cur=conn.cursor()
cur_local=conn_local.cursor()
printtable[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转移数据库里数据的方法,希望对大家有所帮助。

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

THE END

发表回复