Python pyodbc.row 列出

Python pyodbc.row to list

我正在尝试创建一个 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 的 "type" 时,它是一个 class 'str' 而不是 class 列表,因为它应该是 pymongo。如果我打印数据并将其直接复制并粘贴到一个新变量中,它是一个类型 class 列表并在 pymongo 中完成。我错过了什么?

我认为您需要直接使用 cert_data 而不是 cert_list。试试下面。 通常 cursor.fetchone() 检索查询结果集的下一行和 returns 单个序列,或者 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]