使用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 15:07:57 浏览: 42
好的,这个任务可以分成几个步骤来完成。
第一步,需要读取Excel文本并去掉表头。可以使用Python中的pandas库来读取Excel文件,并使用drop函数去掉表头。
```python
import pandas as pd
# 读取Excel文件
df = pd.read_excel('data.xlsx')
# 去掉表头
df = df.drop([0])
```
第二步,需要连接Sqlserver数据库并将数据写入到TEST_list表中。可以使用pymssql库来连接数据库,并使用executemany函数将数据批量写入到数据库中。
```python
import pymssql
# 连接数据库
conn = pymssql.connect(server='localhost', user='username', password='password', database='database_name')
# 获取游标
cursor = conn.cursor()
# 写入数据到数据库
sql = "INSERT INTO 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) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)"
data = [tuple(x) for x in df.values]
cursor.executemany(sql, data)
# 提交事务
conn.commit()
# 关闭连接
conn.close()
```
第三步,需要判断数据是否已经存在于数据库中。可以使用SELECT语句查询数据库中是否已经存在相同的数据。
```python
# 判断数据是否已经存在于数据库中
sql = "SELECT COUNT(*) FROM TEST_list WHERE ID=%s AND 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"
data = [tuple(x) for x in df.values]
for d in data:
cursor.execute(sql, d)
result = cursor.fetchone()
if result[0] > 0:
print('Data already exists:', d)
```
完整代码如下:
```python
import pandas as pd
import pymssql
# 读取Excel文件并去掉表头
df = pd.read_excel('data.xlsx')
df = df.drop([0])
# 连接数据库
conn = pymssql.connect(server='localhost', user='username', password='password', database='database_name')
cursor = conn.cursor()
# 判断数据是否已经存在于数据库中
sql = "SELECT COUNT(*) FROM TEST_list WHERE ID=%s AND 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"
data = [tuple(x) for x in df.values]
for d in data:
cursor.execute(sql, d)
result = cursor.fetchone()
if result[0] > 0:
print('Data already exists:', d)
continue
# 写入数据到数据库
sql = "INSERT INTO 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) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)"
cursor.execute(sql, d)
# 提交事务并关闭连接
conn.commit()
conn.close()
```