使用Python与pymssql将excel文本去掉表头后循环放入Sqlserver名为TEST_list的表内,写入时判断是否有完全重复的数据已存在表内,表的内容有ID,DBNAME,ISN,MODEL,TESTTIME,ERRIDX,ErrorCode_ID,ErrorCode_NAME,Fail_Status,NO,Repair_Status,Analysis_List,Rework_List,OPNAME,Upload_Time,Analysis_Time
时间: 2023-07-31 13:07:57 浏览: 37
可以按照以下步骤实现:
1. 使用pandas库读取excel文件,并去掉表头
```python
import pandas as pd
df = pd.read_excel('filename.xlsx', header=1) # 去掉表头
```
2. 连接Sqlserver数据库,使用cursor执行插入操作
```python
import pymssql
conn = pymssql.connect(server='servername', user='username', password='password', database='databasename')
cursor = conn.cursor()
```
3. 遍历数据,判断是否已存在完全相同的数据,如果不存在则插入到数据库中
```python
for index, row in df.iterrows():
# 判断是否已存在相同数据
cursor.execute("SELECT COUNT(*) FROM TEST_list WHERE DBNAME=%s AND ISN=%s AND MODEL=%s AND TESTTIME=%s AND ERRIDX=%s AND ErrorCode_ID=%s AND ErrorCode_NAME=%s AND Fail_Status=%s AND NO=%s AND Repair_Status=%s AND Analysis_List=%s AND Rework_List=%s AND OPNAME=%s AND Upload_Time=%s AND Analysis_Time=%s",
(row['DBNAME'], row['ISN'], row['MODEL'], row['TESTTIME'], row['ERRIDX'], row['ErrorCode_ID'], row['ErrorCode_NAME'], row['Fail_Status'], row['NO'], row['Repair_Status'], row['Analysis_List'], row['Rework_List'], row['OPNAME'], row['Upload_Time'], row['Analysis_Time']))
result = cursor.fetchone()
if result[0] == 0: # 如果不存在相同数据,则插入
cursor.execute("INSERT INTO TEST_list (DBNAME,ISN,MODEL,TESTTIME,ERRIDX,ErrorCode_ID,ErrorCode_NAME,Fail_Status,NO,Repair_Status,Analysis_List,Rework_List,OPNAME,Upload_Time,Analysis_Time) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)",
(row['DBNAME'], row['ISN'], row['MODEL'], row['TESTTIME'], row['ERRIDX'], row['ErrorCode_ID'], row['ErrorCode_NAME'], row['Fail_Status'], row['NO'], row['Repair_Status'], row['Analysis_List'], row['Rework_List'], row['OPNAME'], row['Upload_Time'], row['Analysis_Time']))
conn.commit() # 提交事务
```
完整代码如下:
```python
import pandas as pd
import pymssql
df = pd.read_excel('filename.xlsx', header=1)
conn = pymssql.connect(server='servername', user='username', password='password', database='databasename')
cursor = conn.cursor()
for index, row in df.iterrows():
cursor.execute("SELECT COUNT(*) FROM TEST_list WHERE DBNAME=%s AND ISN=%s AND MODEL=%s AND TESTTIME=%s AND ERRIDX=%s AND ErrorCode_ID=%s AND ErrorCode_NAME=%s AND Fail_Status=%s AND NO=%s AND Repair_Status=%s AND Analysis_List=%s AND Rework_List=%s AND OPNAME=%s AND Upload_Time=%s AND Analysis_Time=%s",
(row['DBNAME'], row['ISN'], row['MODEL'], row['TESTTIME'], row['ERRIDX'], row['ErrorCode_ID'], row['ErrorCode_NAME'], row['Fail_Status'], row['NO'], row['Repair_Status'], row['Analysis_List'], row['Rework_List'], row['OPNAME'], row['Upload_Time'], row['Analysis_Time']))
result = cursor.fetchone()
if result[0] == 0:
cursor.execute("INSERT INTO TEST_list (DBNAME,ISN,MODEL,TESTTIME,ERRIDX,ErrorCode_ID,ErrorCode_NAME,Fail_Status,NO,Repair_Status,Analysis_List,Rework_List,OPNAME,Upload_Time,Analysis_Time) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)",
(row['DBNAME'], row['ISN'], row['MODEL'], row['TESTTIME'], row['ERRIDX'], row['ErrorCode_ID'], row['ErrorCode_NAME'], row['Fail_Status'], row['NO'], row['Repair_Status'], row['Analysis_List'], row['Rework_List'], row['OPNAME'], row['Upload_Time'], row['Analysis_Time']))
conn.commit()
conn.close()
```