I believe that there is something wrong here:
db_model=self.env['base.external.dbsource'].search([('id','=','2')])class test_oracle(models.Model): _name = 'test.oracle' _rec_name = 'name' _description = 'test' name = fields.Char(size=20, required=True, index=True, ) discr = fields.Char(size=30, required=False, index=True, ) @api.model def search(self, args, offset=0, limit=None, order=None, count=False): """ search(args[, offset=0][, limit=None][, order=None][, count=False]) Searches for records based on the ``args`` :ref:`search domain <reference/orm/domains>`. :param args: :ref:`A search domain <reference/orm/domains>`. Use an empty list to match all records. :param int offset: number of results to ignore (default: none) :param int limit: maximum number of records to return (default: all) :param str order: sort string :param bool count: if True, only counts and returns the number of matching records (default: False) :returns: at most ``limit`` records matching the search criteria :raise AccessError: * if user tries to bypass access rules for read on the requested object. """ db_model=self.env['base.external.dbsource'].search([('id','=','2')]) # db_model = self.pool.get('base.external.dbsource') rec1 = db_model[1] rec2 = db_model[2] for rec in db_model: res = rec.conn res = db_model.connection_open() # result = api.call_kw_multi('base.external.dbsource.connection_test',) res = db_model.connection_open() res = db_model.execute(cr, uid, 1, str1,{'dtsys':''}, metadata=False) """ _logger.warning(str1) # def execute( # self, query=None, execute_params=None, metadata=False, **kwargs # res = db_model.execute(self, uid, 2, str1, '', metadata=True) res = db_model.execute(self, str1, '', metadata=True) _logger.warning('db_model.execute(cr, uid, 1, str1,'', metadata=True)') # res=[{'discr': u'4d', 'id': 4, 'name': u'4n'}, {'discr': u'1d', 'id': 3, 'name': u'1n'}, {'discr': u'2n', 'id': 1, 'name': u'2d Once \u041e\u0434\u0438\u043d \u0440\u0430\u0437'}] # _logger.warning(res) return 0 # res # # res = self._search(args, offset=offset, limit=limit, order=order, count=count) # return res if count else self.browse(res) #
I myself have already reached this point:
db_model2=self.env['base.external.dbsource']
db_model = db_model2.browse(2)
conn = db_model.connection_open()
str1 = "SELECT 1 id,1 name,1 Discr,1 create_uid,1 create_date,1 write_uid,1 write_date FROM dual"
res = db_model.execute(self,str1, '', True,{})
TypeError: execute() takes at most 4 arguments (6 given)
but the last line of execution with an error