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')