2017-02-25 26 views
0

我想从MSSQL数据导入到Python的 - Odoo安装。我可以用下面的代码导入一个字段。这有效,但我想检索除名称之外的其他字段。MSSQL到Python

#Retrieve data through recordset 
RecCount =rs.RecordCount 

print RecCount 

while not rs.EOF: 
    # print rs.Fields.item('Description').value 
    # print rs.Fields.item('Price').value 
    name = rs.Fields.item('Description').value 
    record = {'name' : name} 

    filter = [[['name' ,'=', name]]] 
    product_id = OdooApi.execute_kw(database, uid, pwd, 'product.template', 'search', filter) 

    if not product_id: 
     print " Create - " + name 
     resultset = OdooApi.execute_kw(database, uid, pwd, 'product.template', 'create', [record]) 

    else: 
     print "Already in table - " + name 



    rs.Move(1) 

我想导入其他字段,如条形码字段。下面是我尝试过的,但我得到一个错误。

#Retrieve data through recordset 
RecCount =rs.RecordCount 

print RecCount 

while not rs.EOF: 
    # print rs.Fields.item('Description').value 
    # print rs.Fields.item('Price').value 
    name = rs.Fields.item('Description').value 
    barcode = rs.Fields.item('ItemLookupCode').value 
    record = {'name' : name} 
    recordbarcode = {'barcode' : barcode} 

    filter = [[['barcode' ,'=', barcode]]] 
    product_id = OdooApi.execute_kw(database, uid, pwd, 'product.template', 'search', filter) 

    if not product_id: 
     print " Create - " + barcode 
     resultset = OdooApi.execute_kw(database, uid, pwd, 'product.template', 'create', ['record']['recordbarcode']) 

    else: 
     print "Already in table - " + barcode 



    rs.Move(1) 

我与上面的代码得到的错误是

Traceback (most recent call last): 
    File "importdataorg.py", line 58, in <module> 
    resultset = OdooApi.execute_kw(database, uid, pwd, 'product.template', 'create', ['record']['recordbarcode']) 
TypeError: list indices must be integers, not str 
+0

你觉得不管'[ '记录'] [ 'recordbarcode']'做的名单? –

+0

我不知道我希望能插入条形码字段。我正在测试/学习 – user2379186

+0

此处没有字段。这是两个字符串和两个列表 –

回答

0

我不知道你的错误是在所有有关你使用任何工具。

['record']['recordbarcode']不是有效的Python。

只要运行单独的REPL,并list indices must be integers, not str

你想使用这些变量?

record = {'name' : name} 
recordbarcode = {'barcode' : barcode} 

如果是这样,record['name']是有效的,但是这是真的只是在已有name变量。

也许你希望这本词典

{'name' : name, 'barcode' : barcode} 

或者两个库

[record, recordbarcode] 
+1

谢谢{'name':name,'barcode':barcode}工作。 – user2379186

+0

如果我想在记录已经存在的情况下更新一行,或者如果根据条形码尚不存在,则创建一个新记录。我试过的ResultSet = OdooApi.execute_kw(数据库,UID,PWD, 'product.template', '更新',[记录]) – user2379186

+0

如果你有一个新的问题,请创建新帖子 –