python
  • ms-access
  • odoo-8
  • openerp-8
  • odoo-9
  • 2016-06-17 7 views 7 likes 
    7

    私は、.mdbデータベースからデータを抽出し、それをOdoo 8クラスの列に取得しようとしています。SQLクエリからデータを抽出し、それをOdooクラスの列に割り当てる方法は?

    これは私の.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))) 
    

    Results in the logger info

    誰かが提供できますこの貴重な入力?それらの値をOdooクラスの列に取得する方法(クラスのフィールドに割り当てることを意味します)と、2つのテーブルから列を取得する方法も同様です。

    +0

    そして、より多くのを参照してください。.. pyodbcバージョンをアップグレード/インストールするようにしてください。 (.MDBファイル) –

    +0

    提案があれば誰でも!!! !!! –

    答えて

    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'] 
    

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

    しかし、これはあなたがあなたの状況に応じてそれを更新する必要があるかもしれません例です。

    +0

    Emiproの技術まず、説明された答えに感謝します。しかし、今私は何かのようなエラーが発生しています:AttributeError: 'pyodbc.Cursor'オブジェクトに属性がありません 'dictfetchall' –

    0

    thisリンクそのdiffernentデータベースオーバー

    +0

    私はすでにそのリンクを参照してアップグレードしました。それはまだ動作しません –

    関連する問題