2016-06-17 16 views
7

Tôi đã cố gắng trích xuất dữ liệu từ cơ sở dữ liệu .mdb và đưa nó vào các cột của lớp Odoo 8.Làm thế nào để trích xuất dữ liệu từ truy vấn SQL và gán nó cho cột lớp Odoo?

Đây chính là file py tôi

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

Bây giờ sau khi một số lại làm việc khi tôi bấm nút gửi, dữ liệu xuất hiện như trong hình ảnh sau

Results in the logger info

Ai đó có thể cung cấp đầu vào có giá trị về điều này? giống như cách lấy các giá trị đó vào các cột của lớp Odoo (tôi có nghĩa là gán cho các trường của các lớp) và cũng làm cách nào để lấy các cột từ hai bảng.

+0

Và hơn thế nữa cơ sở dữ liệu khác biệt của nó. (.MDB tập tin) –

+0

Bất cứ ai có bất cứ đề nghị. !!!? –

Trả lời

2

Bạn cần hiểu các loại tìm nạp trong 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') 

Vì vậy, cập nhật cái gì đó mã của bạn như thế,

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

Whatever the values you want to set, all those must be returned by query.

Tuy nhiên đây là ví dụ bạn có thể cần phải cập nhật nó theo tình hình của bạn.

+0

Công nghệ Emipro, Trước hết cảm ơn bạn rất nhiều vì câu trả lời được giải thích của bạn. Nhưng bây giờ tôi nhận được lỗi một cái gì đó như: AttributeError: 'pyodbc.Cursor' đối tượng không có thuộc tính 'dictfetchall' –

0

Hãy thử cài đặt/nâng cấp phiên bản pyodbc .. tham khảo this liên kết

+0

Tôi đã nâng cấp bằng cách tham khảo liên kết đó. Nó vẫn không hoạt động –

Các vấn đề liên quan