使用Python访问NetSuite数据

2024-05-18 10:09:19 发布

您现在位置:Python中文网/ 问答频道 /正文

使用Python,我想从NetSuite中提取数据,同时在NetSuite中添加/更新数据。例如,我想通过Python创建销售订单并添加行项目。在

我知道他们有一个WSDL,我可以使用它。(我希望他们也有一个API,但显然没有……)有人用Python来处理这个WSDL的例子吗?有更好的方法与NetSuite集成吗?在


Tags: 数据项目方法订单api例子wsdlnetsuite
3条回答

有许多Python库可用于处理SOAP消息,尝试使用SUDS,因为它是唯一能够正确使用2014.1netsuitewsdl的库。这只有在一些tweaks之后才有可能。netsuitewsdl既大又复杂,甚至在从本地缓存和加载之后也要花费大量的时间来加载。SUDS库已经有一段时间没有维护了,有一个被维护的fork叫做SUDS jurko,我还没有尝试过。最终,我最终使用原始soap消息与netsuitewebservice进行特定任务的通信。在

我已经处理了大约一周的Netsuite Web服务,没有明确的文档,但一旦您与其他常规的Web服务保持一致,您的行为就会非常简单地适应您自己。我附加了一个小脚本来登录并获得netsuite中服务和数据类型的完整列表。在

使用factory方法创建与netsuite webservice交互的对象。在

我用suds作为SOAP Python库。在

# -*- coding: utf-8 -*-        
from suds.client import Client
import os, time, sys, datetime
import suds
import logging
logging.basicConfig(level=logging.INFO)
logging.getLogger('suds.client').setLevel(logging.DEBUG)

reload(sys)  
sys.setdefaultencoding('utf8')

NS_HOST = 'https://webservices.netsuite.com'
email ='myemail@xxxxxx.com'
pwd   ='mypwd'
account = "99999999"
NS_ENDPOINT = "2016_2"
NS_ROLE = 3

wsdl = NS_HOST + "/wsdl/v" + NS_ENDPOINT + "_0/netsuite.wsdl"

client = Client(url=wsdl)
#You can get the methods and types with this object
print client
ApplicationInfo = client.factory.create('ns16:ApplicationInfo')
ApplicationInfo.applicationId = "xxxxx-XXXX-XXXX-XXXX-XXXXXXXX"

client.set_options(location= NS_HOST + "/services/NetSuitePort_" + NS_ENDPOINT, soapheaders={'applicationInfo':ApplicationInfo})

passport = client.factory.create('ns4:Passport')
passport.email = email
passport.password = pwd
passport.account = account
recordRef = client.factory.create('ns4:RecordRef')
recordRef.name="MX - Gerencia de Contabilidad"
passport.role = recordRef

client.service.login(passport)

Netsuite为Java、.Net和PHP提供了访问其web服务的工具包。对于其他语言,要么有第三方工具箱,要么必须发送原始的SOAP请求。在

对于基于Python的项目,我使用原始SOAP请求方法。我建议您首先熟悉使用任何可用工具包的netsuiteweb服务,然后对于Python,使用这些知识来生成原始SOAP请求。SOAPUI也有很大的帮助。在

您是否研究过restlet,它们通常是web服务的一个很好的替代品。在

相关问题 更多 >