python导入csv文件数据并处理数据存入数据库

python导入csv文件数据并处理数据存入数据库``’

初学python,安装python
引入pymysql:Python解决ModuleNotFoundError: No module named 'pymysql'的问题

1、用管理员身份运行CMD.exe,然后查看python的安装路径
在这里插入图片描述
2、切换到python路径,在Scripts目录下执行pip install pymysql命令,由于我的已经安装过,所以显示的是pymysql的version。
在这里插入图片描述
3、如果要删除pymysql,在Scripts目录下执行pip uninstall pymysql命令,看清楚,是在Scripts目录下。输入y,回车即可。


产品表数据处理

import csv      # csv
import codecs   # csv读取
import re       # 正则替换
import json     # json数据
import pymysql  # mysql
from pymysql.converters import escape_string    #转义方法转义后再进行保存
#pymysql.install_as_MySQLdb()    # 返回字典类型的数据 列表数据不引入
#import MySQLdb.cursors          # 返回字典类型的数据 列表数据不引入
class DoMysql:
    #初始化
    def __init__(self):
        #创建连接
        self.conn = pymysql.Connect(
            host 		= 'host',
            port 		= port,
            user 		= 'user',
            password 	= 'password',
            db 			= 'db',
            charset 	= 'utf8',
            cursorclass = pymysql.cursors.DictCursor  #以字典的形式返回数据
        )
        #获取游标
        self.cursor = self.conn.cursor()

    #返回单条数据
    def fetchOne(self,sql):
        self.cursor.execute(sql)
        return self.cursor.fetchone()

    #返回多条数据
    def fetchAll(self,sql):
        self.cursor.execute(sql)
        return self.cursor.fetchall()

    #插入一条数据
    def insert_one(self,sql):
        result = self.cursor.execute(sql)
        self.conn.commit()
        return result

    #插入多条数据
    def insert_many(self,sql,datas):
        result = self.cursor.executemany(sql,datas)
        self.conn.commit()
        return result

    #更新数据
    def update(self,sql):
        result = self.cursor.execute(sql)
        self.conn.commit()
        return result

    #清空数据
    def truncateTable(self,sql):
        result = self.cursor.execute(sql)
        self.conn.commit()
        return result

    #关闭连接
    def close(self):
        self.cursor.close()
        self.conn.close()
""" #参数分别为:ip,用户名,密码,库名
    db  = MySQLdb.connect(host='host',user='user',password='password',db='db',charset='utf8',cursorclass = MySQLdb.cursors.DictCursor)
    con = db.cursor()"""

def getOneRow(rowDat):
    #return rowDat['CoverPicture']
    img     = rowDat['CoverPicture'].split('?')            # 图片以?分割
    Picture = rowDat['PicturesJson'].split('Picture":"')   # 多图片以?分割
    imgs    = ''
    i       = 0
    for pic in Picture:
        pic = pic.split('?')
        # 去除存在Thumbnail字段的图片
        if re.search('.*?"Thumbnail"', str(pic[0])) == None:
            if i == 0:
                imgs = imgs+pic[0]
            else:
                imgs = imgs+','+pic[0]
            i+=1
    """dats    = {
   
        'serial':           dat['GoodsNo'],
        'designation':      dat['Title'],
        'abstract':         dat['ZhaiYao'],
        'aurify':           dat['GoldTypeName'],
        'min_wgt':          dat['MinGoldWeight'],
        'max_wgt':          dat['MaxGoldWeight'],
        'category':         dat['CategoryName'],
        'gram_wage':        dat['SaleFeePrice'],
        'gram_add_wage':    dat['SaleOtherFeePrice'],
        'img':              img[0],
        'imgs':             imgs,
        'supplier':         2,
        'status':           1,
        'shelf':            0,
        'sell':             1,
    }"""
    indats    = (
        rowDat['
### 使用PythonCSV文件数据导入MySQL数据库 为了实现这一目标,可以采用多种方法。一种常见的方式是利用`pandas`库来处理CSV文件借助`SQLAlchemy`和`PyMySQL`连接操作MySQL数据库。 #### 方法一:使用Pandas与SQLAlchemy组合 这种方法适合于大多数情况下的CSV文件读取与写入数据库的操作: ```python import pandas as pd from sqlalchemy import create_engine # 创建引擎对象用于连接数据库 engine = create_engine('mysql+pymysql://username:password@localhost/dbname') # 读取CSV文件至DataFrame df = pd.read_csv("path/to/your.csv") # 将DataFrame中的数据保存到指定表内 df.to_sql(name='target_table', con=engine, if_exists='append', index=False) ``` 上述代码片段展示了如何创建一个能够访问特定MySQL实例的引擎对象;接着加载本地磁盘上的CSV文件入内存作为临时性的表格结构——即`DataFrame`;最后一步则是把该表格的内容追加到已存在的关系型数据库表里[^1]。 #### 方法二:逐行解析CSV通过SQL语句插入记录 对于非常大的CSV文件来说,可能更倾向于手动控制每条记录的插入过程以优化性能或适应特殊需求: ```python import csv import pymysql.cursors connection = pymysql.connect(host='localhost', user='root', password='', db='testdb', charset='utf8mb4', cursorclass=pymysql.cursors.DictCursor) try: with connection.cursor() as cursor: # 执行 SQL 查询 sql = "INSERT INTO `users` (`email`, `password`) VALUES (%s, %s)" with open('data.csv') as csvfile: reader = csv.reader(csvfile) next(reader) # 跳过标题行 for row in reader: cursor.execute(sql, (row[0], row[1])) # 提交更改 connection.commit() finally: connection.close() ``` 这段脚本首先建立了同MySQL服务器的安全链接,随后定义了一条简单的插入命令模板。之后打开待处理的目标CSV文档,忽略首行列名后遍历剩余各行内容数据库提交新纪录直到完成全部工作为止[^2]。 #### 方法三:直接调用LOAD DATA INFILE指令 如果环境允许的话(比如拥有足够的权限),还可以考虑直接运用MySQL内置的功能快速高效地批量载入外部文本文件内的资料集: ```sql LOAD DATA LOCAL INFILE '/full/path/of/data.csv' INTO TABLE target_table FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n' IGNORE 1 ROWS; ``` 此方式通常被认为是最简洁有效的途径之一,因为它几乎不需要额外编写任何应用程序逻辑就能达成目的。不过需要注意的是,在实际应用前应当确认所使用的客户端工具支持这项特性且配置正确无误[^4]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值