Как извлечь данные из SQL-запроса и назначить их столбцам класса Odoo?

Я пытался извлечь данные из базы данных .mdb и поместить их в столбцы класса Odoo 8.

Это мой файл .py

  class attendance_biometric(osv.Model):
    _name="attendance.biometric"
    _rec_name='name'
    _columns={

        'fdate':fields.datetime('From Date'),
        'tdate':fields.datetime('To Date'),
        'code':fields.integer('Code'),
        'name':fields.many2one('res.users','Employee Name', readonly=True),
        'ref': fields.one2many('bio.data', 'bio_ref', 'Data'),
    }

    _defaults = {
            'name': lambda obj, cr, uid, context: uid,

            }


def confirm_submit(self, cr, uid, ids, context=None):
        result=[]
        DBfile = '/home/administrator/test.mdb'
        conn = pyodbc.connect('DRIVER=MDBtools;DBQ='+DBfile)
        cr = conn.cursor()
        sql = '''
            select InTime, OutTime, OutDeviceId, Duration from 
AttendanceLogs '''
        cr.execute(sql)
        rows = cr.fetchall()
        for row in enumerate(rows):
            result.append(row)
        raise osv.except_osv(_('Info'),_('Data : %s\n' % (result)))

Теперь, после некоторой переделки, когда я нажимаю кнопку отправки, данные отображаются, как на следующих изображениях.

Результаты в информации регистратора

Может ли кто-нибудь внести ценный вклад в это? например, как получить эти значения в столбцах класса Odoo (я имел в виду назначение полей класса), а также как получить столбцы из двух таблиц.


person Shravy    schedule 17.06.2016    source источник
comment
И более того, это другая база данных. (файл .MDB)   -  person Shravy    schedule 23.06.2016
comment
Любой с любым предложением.!!!?   -  person Shravy    schedule 30.06.2016


Ответы (2)


Вам нужно понимать типы выборки в odoo.

 - cr.dictfetchall()
       It will returns the list of dictionary.
       Example:
           [{'column1':'value_column1',}, {'column2':'value_column2',}] 

 - cr.dictfetchone() 
       It will return dictionary (Single record)
       Example:
           {'column1':'value_column1',}


 - cr.fetchall()
        It will returns the list of tuple.
        Example: 
            [('value_column1'), ('value_column2'), ].



 - cr.fetchone()
        It will returns the list of tuple.
        Example: 
            ('value_column1')

Итак, обновите свой код примерно так:

res = cr.dictfetchall()
result['sname'] = res and res[0]['sname']

Какие бы значения вы ни хотели установить, все они должны быть возвращены запросом.

Однако это пример, вам может потребоваться обновить его в соответствии с вашей ситуацией.

person Emipro Technologies Pvt. Ltd.    schedule 17.06.2016
comment
Emipro Technologies, Прежде всего, большое спасибо за поясненный ответ. Но теперь я получаю сообщение об ошибке, например: AttributeError: объект 'pyodbc.Cursor' не имеет атрибута 'dictfetchall' - person Shravy; 20.06.2016

Попробуйте установить/обновить версию pyodbc. Перейдите по этой ссылке

person KbiR    schedule 20.06.2016
comment
Я уже обновился по этой ссылке. Это все еще не работает - person Shravy; 20.06.2016