Salesforce对象查询语言(SOQL)的模型和查询生成器

soql的Python项目详细描述


CI StatusPyPI status

这个包为salesforce对象提供声明性模型,并为从这些模型生成Salesforce Object Query Language (SOQL)查询提供实用程序。

这个包与Simple Salesforce配合得很好。

用法

fromsimple_salesforceimportSalesforcefromsoqlimportattributesfromsoqlimportload_models_from_salesforce_datafromsoqlimportModelfromsoqlimportselectclassAccount(Model):id=attributes.String('Id')deleted=attributes.Boolean('IsDeleted')name=attributes.String('Name')owner=attributes.Relationship('Owner',related_model=User)custom_field=attributes.String('CustomField__c',nullable=True)classUser(Model):id=attributes.String('Id')email=attributes.String('Email')sf=Salesforce(...)query=select(Account) \
    .where(Account.id=='50130000000014c') \
    .join(Account.owner)resp=sf.query(str(query))account=load_models_from_salesforce_data(resp)[0]print(account.id)print(account.owner.id)

型号

模型定义salesforce对象的内存表示,并提供一种惯用的方法来访问数据。

fromsoqlimportattributesfromsoqlimportModelclassUser(Model):# The first argument to an attribute is its name in Salesforce.id=attributes.String('Id')email=attributes.String('Email')user=User(id='123',email='a@b.com')assertuser.id=='123'

助手可以直接从simple_salesforce

加载模型
query=select(User)resp=sf.query(str(query))users=load_models_from_salesforce_data(resp)

关系也可以声明:

classAccount(Model):id=attributes.String('Id')owner=attributes.Relationship('Owner',related_model=User)contacts=attributes.Relationship('Contacts',related_model=User,many=True)

查询

可以从模型生成soql查询:

fromsoqlimportselectquery=select(User).where(User.id=='123')assertstr(query)=="SELECT User.Id, User.Email FROM User WHERE User.Id = '123'"

支持大多数soql,包括…

连接:

fromsoqlimportselectquery=select(Account).join(Account.contacts)assertstr(query)=="SELECT Account.Id, (SELECT User.Id, User.Email FROM Account.Contacts) FROM Account"

子查询:

fromsoqlimportselectsubquery=select(User).columns(User.email).subquery()query=select(User).where(User.email.in_(subquery))assertstr(query)=="SELECT User.Id, User.Email FROM User WHERE User.Email IN (SELECT User.Email FROM User)"

还有更多!

安装

pip install soql

贡献

还有工作要做,鼓励大家贡献!查看contribution guide了解更多信息。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何克服带有空值的不可空bean级验证   “此行有多个标记”的authenticateUser上的java MySQLConnection错误   java处理Jackson异常   java Netbeans编辑器如何知道文件在撤消后不会被修改?   目标C相当于Java的ArrayList   java当需要int时,可以将short传递给方法调用吗?   drawString()方法上的java MouseListener   java服务器socket是执行此操作的最佳选项   java需要单个匹配bean,但找到了2:org。springframework。网状物servlet。mvc。方法注释。RequestMappingHandlerMapping   如何在Java中执行Windows命令?   安卓应用程序的java文件主机   java将所有spring引导属性都设置在内。将yml文件转换为系统属性   Java邮件中的html内联链接在邮件客户端中不起作用   Java二进制文件的bazel版本控制   java如何在自定义ListView中使用Intent   java(Spring MVC+Hibernate 4+Test 4)自动连线DAO返回NULL   java一次add()调用可以在Solr服务器中索引多少文档?   java如何获取Avro GenericRecord大小