python 将sqllite的数据库表格 转换到mysql数据库中
sqlitetomysql
读取本地的sqlite3数据,将它上传到服务器mysql数据。参数有6个,分别是sqlite3路径,sqlite3表名,服务器mysql的ip,mysql用户名,mysql密码,数据表名称
# 连接到SQLite数据库# 从SQLite数据库读取数据
# 连接到MySQL数据库 # 创建MySQL表格(如果不存在) # 删除MySQL表中的所有现有记录 # 将数据插入到MySQL数据库 # 提交更改并关闭连接
import sqlite3
import pymysql
# 读取本地的sqlite3数据,将它上传到服务器mysql数据。参数有6个,分别是sqlite3路径,sqlite3表名,服务器mysql的ip,mysql用户名,mysql密码,数据表名称
def copy_table_to_mysql(sqlite_db_path: str, table_name: str, mysql_host: str, mysql_user: str, mysql_password: str, mysql_database: str):
# 连接到SQLite数据库
sqlite_conn = sqlite3.connect(sqlite_db_path)
sqlite_cursor = sqlite_conn.cursor()
# 从SQLite数据库读取数据
sqlite_cursor.execute(f"PRAGMA table_info({table_name})")
columns_info = sqlite_cursor.fetchall()
columns = []
for column in columns_info:
column_name = column[1]
column_type = column[2]
columns.append(f"`{column_name}` {column_type}")
columns_str = ', '.join(columns)
sqlite_cursor.execute(f"SELECT * FROM {table_name}")
sqlite_data = sqlite_cursor.fetchall()
# 连接到MySQL数据库
mysql_conn = pymysql.connect(host=mysql_host,
user=mysql_user,
password=mysql_password,
database=mysql_database)
mysql_cursor = mysql_conn.cursor()
# 创建MySQL表格(如果不存在)
create_table_query = f"CREATE TABLE IF NOT EXISTS `{table_name}` ({columns_str});"
mysql_cursor.execute(create_table_query)
# 删除MySQL表中的所有现有记录
mysql_cursor.execute(f"TRUNCATE TABLE `{table_name}`")
# 将数据插入到MySQL数据库
insert_columns_str = ', '.join([f"`{column[1]}`" for column in columns_info])
insert_query = f"INSERT INTO `{table_name}` ({insert_columns_str}) VALUES ({', '.join(['%s'] * len(columns_info))})"
mysql_cursor.executemany(insert_query, sqlite_data)
# 提交更改并关闭连接
mysql_conn.commit()
mysql_conn.close()
sqlite_conn.close()
if __name__ == "__main__":
# 读取本地的sqlite3数据,将它上传到服务器mysql数据。参数有6个,分别是sqlite3路径,sqlite3表名,服务器mysql的ip,mysql用户名,mysql密码,数据表名称
copy_table_to_mysql(r'F:\your.db', 'yourtable', 'mysqlip', 'mysqlroot', 'mysqlpwd', 'mysqltable')