Я новичок в python, mongodb и sql. Я работаю в Eclipse 3.7.1 на Mac 10.7. Я использую драйвер pyodbc (и freeTDS) для подключения к базе данных mssql. Я пишу скрипты в Python 2.7. Я хочу запросить базу данных mssql и записать ее в базу данных mongo.
Где я спотыкаюсь, так это то, что выходные данные запроса находятся в списке кортежей Python без имен полей, и я ищу способ преобразовать этот список кортежей в форму, которую будет импортировать mongodb.
Текущий скрипт:
############
# Query mssql
import pyodbc
import json
url = 'DSN=myServer;UID=myUserName;PWD=myPassword;PORT=1433;DATABASE=mydb'
pyodbccon = pyodbc.connect(url)
cursor = pyodbccon.cursor()
numusersQ = "SELECT COUNT(users.userid) FROM users";
cursor.execute(numusersQ); numusers = cursor.fetchall()
nummembsQ = "SELECT COUNT(memberships.membernumber) FROM memberships";
cursor.execute(nummembsQ); nummembs = cursor.fetchall()
userclientQ = "SELECT users.userid, users.client, users.industry FROM users"
cursor.execute(userclientQ); userclient = cursor.fetchall()
#format key value tuples
output = []
for row in userclient:
tuplenew = {'userid': row[0], 'client': row[1], 'industry': row[2], 'numusers': numusers, 'nummembs': nummembs}
output = [output, tuplenew]
#output to mongo
from pymongo.connection import Connection ;
conmongo = Connection('localhost')
db = conmongo.mypymongodb
for key, value in output():
temp = [key,value]
mongooutput.append(temp)
db.pymongocollection.save(mongooutput)
cursor = db.pymongocollection.find()
############
ВЫХОД выглядит как:
[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[], {'numusers': [(103068, )], 'industry': 'npwild', 'client': 'cmh', 'userid': 1, 'nummembs': [(10519, )]}], {'numusers': [(103068, )], 'industry': 'npwild', 'client': 'cmh', 'userid': 2, 'nummembs': [(10519, )]}], {'numusers': [(103068, )], 'industry': 'npwild', 'client': 'cmh', 'userid': 3, 'nummembs': [(10519, )]}], {'numusers': [(103068, )], 'industry': 'npwild', 'client': 'cmh', 'userid': 5, 'nummembs': [(10519, )]}]
СООБЩЕНИЕ ОБ ОШИБКЕ:
Traceback (most recent call last):
File "/Users/eclipse/workspace/pymongo/pymongopkg.py", line 34, in <module>
for key, value in output():
TypeError: 'list' object is not callable
Если кто-то может просто предложить функцию или направить меня к решению, я был бы очень рад.