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

Python 尝试将列表垂直写入.csv文件,python,csv,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

我已经连接到数据库,我正在尝试执行一个简单的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(行[0])
,但它给出了一个错误:

 csv_out.writerow(row)
_csv.Error: iterable expected, not int
我试图在writerow中转换为列表迭代器,但它给出了第一行元素

1 2 3 4 5 
1 2 3 4 5
1 2 3 4 5
但我想要的是

1
2
3
4
5

谢谢大家!

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


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

我不理解您的格式,但如果您遇到
int
错误,请尝试将int放入列表中:
csv\u out.writerow([row])
尝试
csv\u out.writerow([row])
;一个列表是可迭代的,一个int不是这个解决方案有效的,谢谢!但我不太明白那里发生了什么。{[[x[0]]表示行中的x]}与{[x[0]表示行中的x]}。第一个是列表的列表?第二个是整数列表?为什么第二个不起作用呢?
csv.out.writerow
函数要求该行有一个iterable,因为csv行通常有多个值。因此,当它试图调用传递给函数的对象的
\uuuu iter\uuu
属性时(在本例中为int),它抛出了一个错误。通过使用一个列表或另一个iterable(tuple,set,…),它可以迭代您传入的值,并使用您设置的定界符(或者我假设是这样)将它们写入一个文件,这在现在很有意义。谢谢你,发发慈悲吧