2017-07-13 2 views
0
sqlCur.execute('SELECT TOP 10 '+fld+cc.joins+cc.where,custo) 
tub=sqlCur.fetchall() 

De la requête ci-dessus, j'obtiens des données de SQL Server vers des tuples Python. Je convertis ces données dans la liste de OrderedDict() et puis utilise insert_many disponible dans pymongo pour pousser des données à mongodb.
Pour mapper des colonnes SQL avec des colonnes mongo, j'ai un OrderedDict(cols) qui est utilisé comme ci-dessous.python: supprime les guillemets de la chaîne à exécuter en tant que commande ou mappe une valeur de chaîne à la clé

sqlCol=list(cols.keys()) 
mongoCol=list(cols.values()) 

insArray=[] 
for b in tub: 
    doc=OrderedDict() 
    lst=['b.'+x for x in sqlCol] 
    for v in range(len(mongoCol)): 
     ii=lst[v] 
     doc[ll[v]]=lst[v] 
    insArray.append(doc) 

Mais, dans le résultat, je vois les noms de colonnes au lieu de valeurs parce que la liste lst est d'avoir les noms de colonnes comme chaîne, mais il doit être mis en correspondance avec les mongoColumns sans citations .
Comment puis-je y parvenir ou y a-t-il une meilleure façon de gérer cela?
BTW, j'utilise dans Python 3.6

+0

Pouvez-vous partager les données de l'échantillon que l'on retourne sqlCur – GThamizh

+0

@GThamizh: Je l'obtenir a une liste de tuples comme [('Godad', 73399, 'C'), ('Godad ', 73483,' je ')] –

Répondre

0

Essayez, considérons mongo_cols pour les colonnes de collecte mongo db (Il était échantillon, vous pouvez le changer avec votre propre schéma de collecte mongo db)

mongo_cols = ("name","id","status") 

values = [("GoDad", 73399, "C"), ("GoDad", 73483, "I")] 

keys_values_insert =[dict(zip(mongo_cols, k)) for k in values] 

print (keys_values_insert) # [{'status': 'C', 'name': 'GoDad', 'id': 73399}, {'status': 'I', 'name': 'GoDad', 'id': 73483}] 

Mongo DB - processus

> db.products.insert([{'status': 'C', 'name': 'GoDad', 'id': 73399}, {'status': 'I', 'name': 'GoDad', 'id': 73483}]) 
> 
> 
> db.products.find() 
{ "_id" : ObjectId("5967be93162ab4d87801d2ea"), "status" : "C", "name" : "GoDad", "id" : 73399 } 
{ "_id" : ObjectId("5967be93162ab4d87801d2eb"), "status" : "I", "name" : "GoDad", "id" : 73483 }