Python pyodbc.row 列出

Hea*_*ath 7 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))
Run Code Online (Sandbox Code Playgroud)

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

Ang*_*ela 7

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

cert_data = cursor.fetchone()
print type(cert_data) 
Run Code Online (Sandbox Code Playgroud)

除了使用 cursor.fetchone(),您还可以使用游标作为迭代器

for row in cursor:
   print row
   # use row data to insert to mongodb
Run Code Online (Sandbox Code Playgroud)

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

for row in cursor:
   row_to_list = [elem for elem in row]
Run Code Online (Sandbox Code Playgroud)