python连接MySQL数据库并创建表导入数据

321 阅读3分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

需求:

将以下字典数据写入到MySQL数据库中

Company_data = {"Company_name":"KeWoSi","Code":603486,"Total_Assets":4332090968,"Total_liabilities":1846707609,"total_equity":2485383360}

    工具:

    • python环境或者Anaconda
    • pycharm编辑器
    • 电脑上有安装好的MySQL数据库
    • 导入包: import pymysql

    代码详解:

    1. 连接数据库并创建表

    import pymysql # 导入MySQL数据库包
    
    
    # 填写必要的参数——>host:数据库地址,默认写本地localhost,user:用户名,password:密码,db:连接的数据库名,port端口:3306
    db = pymysql.connect(host="localhost", user="root", password="root", db="spider", port=3306)
    # 创建一个游标对象
    cur = db.cursor()
    
    
    
    
    # 先执行删除语句:如果存在表test0614,则删除。这是为了后续调试的方便
    cur.execute("drop table if exists test0614")
    # 执行sql语句:创建表名为test0614的数据表,为了方便演示,以下只定义了字段名称和数据类型
    cur.execute(
    "CREATE TABLE test0614 (Company_Name VARCHAR(255),Code VARCHAR(255),Total_Assets bigint(50),Total_liabilities bigint(50),total_equity bigint(50))"
    )
    # 附:int类型的最大值2147483647,而我们要输入的整型数据大都超过这个值,所以改成bigint(50),扩大字段的长度
    
    
    

    2. 整合数据

    # 要写入数据库的字典数据
    Company_data = {"Company_name":"KeWoSi","Code":603486,"Total_Assets":4332090968,"Total_liabilities":1846707609,"total_equity":2485383360}
    
    
    # 创建一个空的字符串di
    di = ""
    # 将字典里面的数据值转化为以逗号分隔的字符串,这是为了下面的整行的插入
    for i in Company_data.keys():
    di = (di + '"%s"' + ",") % (Company_data[i])
    print(di[:-1]) # 去掉最后一个逗号字符
    
    
    
    
    """
    输出结果为:
    "KeWoSi","603486","4332090968","1846707609","2485383360"
    """
    
    
    

    3. 写入数据并关闭数据库

    # 将整合好的字符串数据插入数据表test0614中
    sql1 = "INSERT INTO test0614 VALUES (%s)" % (di[:-1]) # 第二种插入方法
    
    
    # 执行插入语句
    cur.execute(sql1)
    
    
    
    
    # 执行commit操作,插入语句才能生效
    cur.connection.commit()
    
    
    
    
    # 关闭数据库
    db.close()
    
    
    

    以下是完整的代码: ↓

    
    import warnings
    warnings.filterwarnings("ignore") # 程序可以运行,但可能会提示警告,本人的强迫症让我不得不调用warnings模块来忽略警告!
    
    
    # 要写入数据库的字典数据
    Company_data = {"Company_name":"KeWoSi","Code":603486,"Total_Assets":4332090968,"Total_liabilities":1846707609,"total_equity":2485383360}
    
    
    
    
    # 创建一个空的字符串di
    di = ""
    
    
    
    
    # 将字典里面的数据值转化为以逗号分隔的字符串,这是为了下面的整行的插入
    for i in Company_data.keys():
    di = (di + '"%s"' + ",") % (Company_data[i])
    
    
    
    
    import pymysql # 导入MySQL数据库包
    
    
    
    
    # 填写必要的参数——>host:数据库地址,默认写本地localhost,user:用户名,password:密码,db:连接的数据库名,port端口:3306
    db = pymysql.connect(host="localhost", user="root", password="root", db="spider", port=3306)
    
    
    
    
    # 创建一个游标对象
    cur = db.cursor()
    
    
    
    
    # 先执行删除语句:如果存在表test0614,则删除。这是为了后续调试的方便
    cur.execute("drop table if exists test0614")
    
    
    
    
    # 执行sql语句:创建表名为test0614的数据表,为了方便演示,以下只定义了字段名称和数据类型
    cur.execute(
    "CREATE TABLE test0614 (Company_Name VARCHAR(255),Code VARCHAR(255),Total_Assets bigint(50),Total_liabilities bigint(50),total_equity bigint(50))"
    )
    # 附:int类型的最大值2147483647,而我们要输入的整型数据大都超过这个值,所以改成bigint(50),扩大字段的长度
    
    
    
    
    sql1 = "INSERT INTO test0614 VALUES (%s)" % (di[:-1]) # 第二种插入方法
    
    
    
    
    # 执行插入语句
    cur.execute(sql1)
    
    
    
    
    # 执行commit操作,插入语句才能生效
    cur.connection.commit()
    
    
    
    
    # 关闭数据库
    db.close()
    
    
    

    结语:

    趁年轻,多敲代码、多动手、多实践,我们共同加油!!!
    在这里插入图片描述