Issues with Odoo v13 UID/API



Odoo v13的API有问题。我能够获取服务器信息,但由于某种原因没有返回 uid

import xmlrpc.client
url ="localhost:8069"
db = "pnv3"
username = "test"
password = "test"
common = xmlrpc.client.ServerProxy('{}/xmlrpc/2/common'.format(url))
print(common.version())
uid = common.authenticate(db, username, password, url)
print(uid)

收到此错误

Traceback (most recent call last):
File "C:/Users/Web Content/.PyCharmCE2019.3/config/scratches/scratch.py", line 11, in <module>
uid = common.authenticate(db, username, password, url)
File "C:UsersWeb ContentAppDataLocalProgramsPythonPython37libxmlrpcclient.py", line 1112, in __call__
return self.__send(self.__name, args)
File "C:UsersWeb ContentAppDataLocalProgramsPythonPython37libxmlrpcclient.py", line 1452, in __request
verbose=self.__verbose
File "C:UsersWeb ContentAppDataLocalProgramsPythonPython37libxmlrpcclient.py", line 1154, in request
return self.single_request(host, handler, request_body, verbose)
File "C:UsersWeb ContentAppDataLocalProgramsPythonPython37libxmlrpcclient.py", line 1170, in single_request
return self.parse_response(resp)
File "C:UsersWeb ContentAppDataLocalProgramsPythonPython37libxmlrpcclient.py", line 1342, in parse_response
return u.close()
File "C:UsersWeb ContentAppDataLocalProgramsPythonPython37libxmlrpcclient.py", line 656, in close
raise Fault(**self._stack[0])
xmlrpc.client.Fault: <Fault 1: 'Traceback (most recent call last):n  File "/odoo/odoo-server/odoo/modules/registry.py", line 59, in __new__n    return cls.registries[db_name]n  File "/odoo/odoo-server/odoo/tools/func.py", line 69, in wrappern    return func(self, *args, **kwargs)n  File "/odoo/odoo-server/odoo/tools/lru.py", line 44, in __getitem__n    a = self.d[obj].menKeyError: 'pnv3'nnDuring handling of the above exception, another exception occurred:nnTraceback (most recent call last):n  File "/odoo/odoo-server/odoo/addons/base/controllers/rpc.py", line 63, in xmlrpc_2n    response = self._xmlrpc(service)n  File "/odoo/odoo-server/odoo/addons/base/controllers/rpc.py", line 43, in _xmlrpcn    result = dispatch_rpc(service, method, params)n  File "/odoo/odoo-server/odoo/http.py", line 138, in dispatch_rpcn    result = dispatch(method, params)n  File "/odoo/odoo-server/odoo/service/common.py", line 61, in dispatchn    return g[exp_method_name](*params)n  File "/odoo/odoo-server/odoo/service/common.py", line 30, in exp_authenticaten    res_users = odoo.registry(db)['res.users']n  File "/odoo/odoo-server/odoo/__init__.py", line 104, in registryn    return modules.registry.Registry(database_name)n  File "/odoo/odoo-server/odoo/modules/registry.py", line 61, in __new__n    return cls.new(db_name)n  File "/odoo/odoo-server/odoo/modules/registry.py", line 73, in newn    registry.init(db_name)n  File "/odoo/odoo-server/odoo/modules/registry.py", line 141, in initn    with closing(self.cursor()) as cr:n  File "/odoo/odoo-server/odoo/modules/registry.py", line 492, in cursorn    return self._db.cursor()n  File "/odoo/odoo-server/odoo/sql_db.py", line 649, in cursorn    return Cursor(self.__pool, self.dbname, self.dsn, serialized=serialized)n  File "/odoo/odoo-server/odoo/sql_db.py", line 186, in __init__n    self._cnx = pool.borrow(dsn)n  File "/odoo/odoo-server/odoo/sql_db.py", line 532, in _lockedn    return fun(self, *args, **kwargs)n  File "/odoo/odoo-server/odoo/sql_db.py", line 600, in borrown    **connection_info)n  File "/usr/local/lib/python3.7/dist-packages/psycopg2/__init__.py", line 130, in connectn    conn = _connect(dsn, connection_factory=connection_factory, **kwasync)npsycopg2.OperationalError: FATAL:  database "pnv3" does not existnn'>
Process finished with exit cod

1

Databse 确实存在,已经三重检查了我的密码,目前不确定还能做什么。

Odoo服务器的URL应该在开头包含协议部分"http://"。奇怪的是你得到了版本信息。您获得什么作为版本的输出?

此外,您将 url 作为最后一个参数传递给authenticate方法,这不是必需的。这仍然不应该给出您收到的错误。

尝试使用这两个修复程序编写代码,并报告是否有帮助:

import xmlrpc.client
url ="http://localhost:8069"
db = "pnv3"
username = "test"
password = "test"
common = xmlrpc.client.ServerProxy('{}/xmlrpc/2/common'.format(url))
print(common.version())
uid = common.authenticate(db, username, password, {})
print(uid)

相同的代码适用于我的机器...

最新更新