我有一个与数据库的连接,我正在尝试执行一个简单的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
谢谢!
答案 0 :(得分:2)
您可以尝试first_elements = [[x[0]] for x in rows]
创建表示行而不是整数的可迭代元素。
编辑:正如Jean在评论中提到的那样,您可以csv.out.writerow([row])
作为替代解决方案。