如何用python代码优雅地实现以下功能,从Excel读取数据并去掉所有单元格中的空格,批量入mysql数据库 其中Excel的标题为acc_key,issuance_date,issuance_number,tracking_number,logistics_company_name,Excel的名称为shippment.XLS,Excel的路劲在当前目录下,mysql数据库的库为py,表名:logistics_trajectory,数据库对应的表字段名跟Excel一样,也是acc_key,issuance_date,issuance_number,tracking_number,logistics_company_name,IP:192.168.0.126,账号:root 密码:quc@2022@din Excel中的数据做以下特殊处理 如果tracking_number列中如果哪个单元格有/,则tracking_number列以/拆分成多行数据,记住要把/去掉,拆分的多行数据中,别的字段的值都一样就行
时间: 2024-03-24 21:36:31 浏览: 69
可以使用Python中的pandas和mysql-connector库来实现此功能,具体代码如下:
```python
import pandas as pd
import mysql.connector
# 读取Excel文件,去掉单元格中的空格
df = pd.read_excel('shippment.XLS')
df = df.applymap(lambda x: x.strip() if type(x) == str else x)
# 处理tracking_number列,拆分成多行数据
s = df['tracking_number'].str.split('/', expand=True).stack()
s.index = s.index.droplevel(-1)
s.name = 'tracking_number'
df = df.drop('tracking_number', axis=1).join(s)
# 连接mysql数据库
cnx = mysql.connector.connect(user='root', password='quc@2022@din',
host='192.168.0.126', database='py')
cursor = cnx.cursor()
# 批量插入数据到数据库
for row in df.itertuples():
query = f"INSERT INTO logistics_trajectory (acc_key, issuance_date, issuance_number, tracking_number, logistics_company_name) VALUES ('{row.acc_key}', '{row.issuance_date}', '{row.issuance_number}', '{row.tracking_number}', '{row.logistics_company_name}')"
cursor.execute(query)
cnx.commit() # 提交事务
cursor.close() # 关闭游标
cnx.close() # 关闭数据库连接
```
注意,这段代码只是提供了一个思路,具体实现时需要根据实际情况进行修改。另外,在处理Excel和数据库操作时,需要考虑异常情况的处理,例如文件不存在、数据库连接失败等。
阅读全文