gpt4 book ai didi

openerp - 如何编写使用 OpenERP ORM 直接上传到 Postgres 数据库的 Python 脚本

转载 作者:行者123 更新时间:2023-12-03 16:41:07 25 4
gpt4 key购买 nike

我需要在 Python 中编写一个“独立”脚本,仅使用 OpenERP 的 ORM 模块将销售税上传到数据库中的 account_tax 表。我想做的是类似于下面的伪代码。

有人可以向我提供有关以下内容的更多详细信息:
1) 我需要设置什么 sys.path
2)在导入“帐户”模块之前我需要导入哪些模块。目前,当我导入“帐户”模块时,出现以下错误:
AssertionError:报告“report.custom”已经存在!
3)获取我的数据库游标的正确方法是什么。在下面的代码中,我只是直接调用 psycopg2 来获取游标。

如果这种方法行不通,除了编写 XML 文件来从 OpenERP 应用程序本身加载数据之外,任何人都可以提出替代方法。这个过程需要在标准 OpenERP 应用程序之外运行。

伪代码:

import sys
# set Python paths to access openerp modules
sys.path.append("./openerp")
sys.path.append("./openerp/addons")

# import OpenERP
import openerp

# import the account addon modules that contains the tables
# to be populated.
import account

# define connection string
conn_string2 = "dbname='test2' user='xyz' password='password'"

# get a db connection
conn = psycopg2.connect(conn_string2)

# conn.cursor() will return a cursor object
cursor = conn.cursor()

# and finally use the ORM to insert data into table.

最佳答案

如果您想通过 Web 服务进行操作,请查看 OpenERP XML-RPC Web services

示例代码与 OpenERP Web 服务一起使用:

import xmlrpclib

username = 'admin' #the user
pwd = 'admin' #the password of the user
dbname = 'test' #the database

# OpenERP Common login Service proxy object
sock_common = xmlrpclib.ServerProxy ('http://localhost:8069/xmlrpc/common')
uid = sock_common.login(dbname, username, pwd)

#replace localhost with the address of the server
# OpenERP Object manipulation service
sock = xmlrpclib.ServerProxy('http://localhost:8069/xmlrpc/object')

partner = {
'name': 'Fabien Pinckaers',
'lang': 'fr_FR',
}
#calling remote ORM create method to create a record
partner_id = sock.execute(dbname, uid, pwd, 'res.partner', 'create', partner)

更清楚你也可以使用 OpenERP Client lib
带有客户端库的示例代码:
import openerplib

connection = openerplib.get_connection(hostname="localhost", database="test", \
login="admin", password="admin")
user_model = connection.get_model("res.users")
ids = user_model.search([("login", "=", "admin")])
user_info = user_model.read(ids[0], ["name"])
print user_info["name"]

您看到两种方式都很好,但是当您使用客户端库时,代码较少且易于理解,而使用 xmlrpc 代理是您将处理的较低级别的调用
希望这会帮助你。

关于openerp - 如何编写使用 OpenERP ORM 直接上传到 Postgres 数据库的 Python 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11493578/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com