本片文章承接上一篇文章,代码基本与上篇差不多,上片是先把access里面的表在mysql里面建立好这篇文章主要是将数准换到mysql里面,下面的代码需要配合上篇文章一起使用,不过改动一下也可以独立的转数据。
import pyodbc
import pymysql
#创建access数据库库连接
DBfile = r"C:/Users/22248/Desktop/原始数据库/AdventureWorks2008.mdb" # 数据库文件
conn_A = pyodbc.connect(r"DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=" + DBfile + ";Uid=;Pwd=;")
cursor_A = conn_A.cursor()
#创建mysql数据库连接
conn_M = pymysql.connect(
host='localhost',
user='root',
passwd='xxx',#输入自己的mysql密码
port=3306,
db='work2009',
charset='utf8'
)
cursor_M = conn_M.cursor(pymysql.cursors.DictCursor)
#准备3个容器
tables = []
fields = []
field_str = []
#获取所有表名
for table_info in cursor_A.tables(tableType='TABLE'):
tables.append(table_info.table_name)
#遍历所有表名
for table in tables:
for row in cursor_A.columns(table):
fields.append(row.column_name)
#进行sql语句拼接
f = ','.join(fields)
s = ','.join(['%s' for i in range(len(fields))])
sql = f'insert into {table}({f}) values({s})'
SQL = f"SELECt * from {table};"
# print(sql)
# print(SQL)
#获取到表的数据
for row in cursor_A.execute(SQL):
field_str.append(row)
cursor_M.executemany(sql, field_str) # 传入多条数据
conn_M.commit() # 提交更改
fields.clear()
field_str.clear()
cursor_A.close()
conn_A.close()
cursor_M.close() # 游标关闭
conn_M.close()



