Python pyodbc.row列出

时间:2018-10-10 00:21:13

标签: python sql-server pymongo-3.x

我正在尝试创建一个python脚本,以将SQLServer数据库转换为Mongodb。在来自SQLServer的查询中,我使用FOR JSON AUTO方法将数据作为JSON返回。当我使用以下代码时,我无法为pymongo的var获得正确的类型以正确插入数据。

client = MongoClient('localhost', 27017)
db = client.npnrd_test
collection = db.certs

sql_file = open('./sql/F1043_Tract.sql')
sql_d = sql_file.read()
sql_file.close()

cursor.execute(sql_d)
cert_data = cursor.fetchone()
cert_list = cert_data[0]
print(cert_list)
print(type(cert_list))

当我获得cert_list的“类型”时,它是类“ str”而不是类列表,因为它应该用于pymongo。如果我打印数据并将其直接复制并粘贴到新变量中,则它是类型类列表,并在pymongo中完成。我想念什么?

1 个答案:

答案 0 :(得分:0)

我认为您需要直接使用cert_data而不是cert_list。请尝试以下。 通常,cursor.fetchone()检索查询结果集的下一行并返回单个序列,如果没有更多行可用,则返回None。您在使用pyodbc吗?

cert_data = cursor.fetchone()
print type(cert_data) 

除了使用cursor.fetchone()之外,您还可以将光标用作迭代器

for row in cursor:
   print row
   # use row data to insert to mongodb

根据评论更新答案。要将pyodbc.row转换为列表,可以使用简单的列表理解。

for row in cursor:
   row_to_list = [elem for elem in row]