我有以下脚本,感谢大家的帮助几乎完成,因为它现在将结果打印到屏幕上。我还想再添加一个步骤,它将采用相同的屏幕输出并将其转储到文本文件中。
我认为这是通过file.write()
但不知道如何让它将结果中的信息写入文件。请帮忙,我对python很新,所以我有点迷失,试图从书中弄明白。
现在打印出来但只是查询返回的最后一行。最终它可能只是打印一行然后一次又一次地覆盖它所以我需要它来打印整个获取全部或结果
import adodbapi
# Connect to the SQL DB
conn = adodbapi.connect("Provider=SQLOLEDB; SERVER=xx.x.xx.x; Initial Catalog=master_db;User Id=user; Password=pass; ")
curs = conn.cursor()
# Execute SQL procedure things_referencing"
curs.execute('util.things_procedure', )
results = curs.fetchall()
for row in results:
print row
f = open('test.txt', 'w')
s = str(row)
f.write(s)
f.close()
conn.close()
答案 0 :(得分:9)
“结果”元组中的每个“行”都是一个记录元组。您希望如何格式化此数据取决于您,但在最基本的级别,您可以将其转换为str(row)
现在去阅读有关如何读写文件的python文档:
http://docs.python.org/tutorial/inputoutput.html
<强>更新强>
参考您的新代码示例,您正在执行for循环并打印每一行,然后您打开一个文件,并且只写入从for循环中分配的行的最后一个值。打印的for循环与您执行的写入操作无关。已为row
的每个值分配了results
,但您只使用了最后一次分配的值。
你应该做的是首先打开文件,然后开始你的循环,写入行的每个值:
with open('test.txt', 'w') as f:
for row in results:
print row
f.write("%s\n" % str(row))
如果您使用with
上下文,则在您离开该范围后,它会自动为您关闭该文件。您可以使用字符串格式,而不是仅使用str
转换为字符串,并添加换行符。
答案 1 :(得分:1)
确实是用file.write完成的,但你必须先打开文件。所以你会修改下面的for循环
f = open('/path/to/file', 'w')
for row in results:
f.write(row)
f.close()