【问题标题】:python: remove quotes from string to execute as a command or map a string value to keypython:从字符串中删除引号以作为命令执行或将字符串值映射到键
【发布时间】:2017-07-13 06:01:53
【问题描述】:
sqlCur.execute('SELECT TOP 10 '+fld+cc.joins+cc.where,custo)
tub=sqlCur.fetchall()

通过上述查询,我​​将数据从 SQL Server 获取到 Python 元组。我正在将此数据转换为OrderedDict() 列表,然后使用pymongo 中可用的insert_many 将数据推送到mongodb。
要将 SQL 列映射到 mongo 列,我有一个 OrderedDict(cols),如下所示。

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)

但是,在结果中我看到的是 column names 而不是 values 因为列表 lstcolumn names 作为字符串但它需要与不带引号的 mongoColumns 进行映射。
我该如何实现这一点,或者有没有更好的方法来处理这个问题?
顺便说一句,我在 Python 3.6

中使用

【问题讨论】:

  • 能否分享一个sqlCur返回的示例数据
  • @GThamizh :我知道它有一个元组列表,例如 [('GoDad', 73399, 'C'), ('GoDad', 73483, 'I')]

标签: python mongodb pymongo ordereddictionary


【解决方案1】:

试试这个,考虑 mongo_cols 用于 mongo db 集合的列(这是示例,您可以使用自己的 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 - 进程

> 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 }

【讨论】:

    猜你喜欢
    • 2010-10-05
    • 2012-08-21
    • 1970-01-01
    • 2022-12-14
    • 1970-01-01
    • 1970-01-01
    • 2018-04-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多