1

我有一本带有几张纸的excel书。每张纸都有两列,其中PersonIDLegacyID。我们基本上是在尝试更新数据库中的一些记录personid。这相对容易实现 TSQL,我什至可以在 powershell 中快速完成它,但由于我一直在尝试学习 Python,所以我想我会在 Python 中尝试这个。我使用xlrd了模块,并且能够打印更新语句。下面是我的代码:

import xlrd

book = xlrd.open_workbook('D:\Scripts\UpdateID01.xls')
sheet = book.sheet_by_index(0)

myList = []
for i in range(sheet.nrows):
   myList.append(sheet.row_values(i))


outFile = open('D:\Scripts\update.txt', 'wb')

for i in myList:
    outFile.write("\nUPDATE PERSON SET LegacyID = " + "'" + str(i[1]) + "'" + " WHERE personid = " + "'" + str(i[0])
                  + "'")

两个问题 - 当我读取输出文件时,我看到LegacyID打印为浮点数。我如何摆脱.0每个 id 的末尾?第二个问题,python 不会在输出文本文件的新行中打印每个更新语句。我如何格式化它?

编辑:请忽略格式问题。当我在 Notepad++ 中打开输出文件时,它确实以新行打印。浮动问题仍然存在。

4

3 回答 3

1

试试这个..

# use 'a' if you want to append in your text file
outFile = open(r'D:\Scripts\update.txt', 'a')

for i in myList:
    outFile.write("\nUPDATE PERSON SET LegacyID = '%s' WHERE personid = '%s'" %( int(i[1]), str(i[0])))
于 2013-06-05T07:33:58.943 回答
1

由于您正在学习 Python(这非常值得称赞!),您应该开始阅读Python 文档中有关字符串格式的内容。每当您有问题时,这是最好的起点。

提示:您可能希望使用 . 将浮点项转换为整数int()

于 2013-06-05T07:34:57.827 回答
1

你能把 LegacyID 变成 ints 吗?

i[1] = int(i[1])

outFile.write("\nUPDATE PERSON SET LegacyID = " + "'" + str(i[1]) + "'" + " WHERE personid = " + "'" + str(i[0]) + "'" )

于 2013-06-05T07:36:51.830 回答