尝试将列表垂直写入.csv文件

时间:2016-11-08 19:40:45

标签: python csv

我有一个与数据库的连接,我正在尝试执行一个简单的select命令并写入.csv文件。这就是我所拥有的

import pyodbc
import csv

print("Imported pyodbc")
username = "****"
# connection_string = "*Connection_string*" % username
print("Before connection")
# conn = pyodbc.connect(connection_string)
conn = pyodbc.connect("connection string")

print("Connection complete")

cursor = conn.cursor()

cursor.execute("SELECT * FROM (tablename) limit 10")

rows = list(cursor.fetchall())
for row in rows:
    print(row)



with open('\\*link*\\test.csv','w', newline='') as out:
    csv_out=csv.writer(out)

    first_elements = [x[0] for x in rows]
    print(first_elements)
    for i in range(len(first_elements)):
        print (first_elements[i])
        temp=first_elements[i]
        csv_out.writerow(temp)
    csv_out.writerow('')

每一行都是一个包含204个元素的元组,我试图只保存.csv文件中的第一个元素。我尝试使用csv.writeout(row[0]),但却出错了:

 csv_out.writerow(row)
_csv.Error: iterable expected, not int

我试图转换为一个列表,写入器内部的迭代器,但它给出了第一行元素的行

1 2 3 4 5 
1 2 3 4 5
1 2 3 4 5

但我想要的是

1
2
3
4
5

谢谢!

1 个答案:

答案 0 :(得分:2)

您可以尝试first_elements = [[x[0]] for x in rows]创建表示行而不是整数的可迭代元素。

编辑:正如Jean在评论中提到的那样,您可以csv.out.writerow([row])作为替代解决方案。