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 GrizzlyWebServer+Spring+Jersey+从JAR中提供静态内容   ubuntu的java本地SMTP服务器   java下载Postgres大对象后,将自动提交设置为true的正确方法是什么?   java统一成本搜索实现   多线程修改的java StringBuilder   java如何使用org将数据发布到javascript。w3c。多姆。文件   java是否有表单字段验证规则的现有库?(强制、可选、最小长度、最大长度、不能包含空格等)?   java我如何克服这个Hibernate限制?   带有二进制数据的java REST服务   我的java银行程序抛出了一个关键点异常,我不知道为什么   java Katharsis Json Api限制修补程序   java如何避免许多“if”并在执行时提供运行时参数   简单java maven项目中的eclipse log4j   使用java从XML检索文本和标记