用python把txt文档数据加载到mysql

在测试的时候,需要造模拟数据,或者是将生产环境的数据导出到测试环境中去,本文记录通过python读取txt文件,并将数据导入mysql数据库

1、示例代码

import pymysql
import pandas as pd


mydb = pymysql.connect(
  host="localhost",
  user="yourusername",
  password="yourpassword",
  database="yourdatabase"
)

mycursor = mydb.cursor()

# 从txt文档取数数据
df = pd.read_csv('D:\\excel\\test.txt', delimiter=',', encoding='gbk')

# print(df)

#先清空表数据
sql1 = "truncate table test"
mycursor.execute(sql1)

df = df.where(pd.notnull(df), None)

for index, row in df.iterrows():
    try:
        # Convert NaN values to None
        row = row.where(pd.notnull(row), None)
        # 字段是否为空处理
        row['coml1'] = int(row['coml1']) if not pd.isna(row['coml1']) else None
        row['coml2'] = int(row['coml2']) if not pd.isna(row['coml2']) else None

        sql = "INSERT INTO test(id,coml1,coml2) " \
              "VALUES (%s, %s, %s)"
        val = tuple(row)
        mycursor.execute(sql, val)
    except Exception as e:
        print(f"Error occurred: {e}")
        mydb.rollback()

mydb.commit()

mycursor.close()
mydb.close()

2、需要注意的问题
1、txt文件中的“,”(逗号)间隔符一定要是英文格式的,我在这里除了问题,排查了半天
2、sql语句中的占位符,一定要是%s,不能加引号
3、文件的路径,一般可以用“/”,使用“\”的时候需要用’’\’’,因为python中“\”是转义符
4、cursor.execute需要在循环内,循环一次执行一次
 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值