2016-10-19 5 views
0

私はHeroku Connect(Salesforceと統合されています)に取り組んでいます。私の列の1つに「Multipicklist」というタイプがあります。Postgresの "Multipicklist"型を照会する方法

私はpsycopg2を使用して、Pythonで作業しています。

複数の種類の列の1つの変数値を照合する正しい方法は何ですか?

例は:

セイcustom__cカラムはmultipicklistcol__c呼びかけています。 custom__cの行があり、multipicklistcol__cの値は{'A','B','C'}です。

変数がparam = 'A'の場合、custom__c行をparamを使用して選択するにはどうすればよいですか?

私はいくつかの異なるアプローチ、私のためにその仕事のどれを試してみました:

cur.execute("""SELECT name, sfid FROM salesforce.custom__c WHERE (%s) <@ multipicklistcol__c;""", (param,)) 

cur.execute("""SELECT name, sfid FROM salesforce.custom__c WHERE (%s) IN multipicklistcol__c;""", (param,)) 

cur.execute("""SELECT name, sfid FROM salesforce.custom__c WHERE multipicklistcol__c includes (%s);""", (param,)) 

cur.execute("""SELECT name, sfid FROM salesforce.custom__c WHERE (%s) = ANY(multipicklistcol__c)""", (param,)) 
+0

列がテーブルにどのように定義されているかを表示できますか? [this](https://learn.capstorm.com/copystorm-menu/storm-frequently-asked-questions/item/165-copystorm-faq-datatype-mapping)によると、MULTIPICKLISTはデータベース内でVARCHARとして表現され、あなたの例では配列のように見えます – harmic

+0

私は実際にそのリソースを見ました、ありがとう! Herokuでは、このタイプは「multipicklist」として明示的に定義されていますが、これはSalesforceでうまくいくかもしれません。列を選択すると無条件にいくつか興味深い結果が得られました。データを繰り返して、文字列の文字を反復処理するような値( 'xのデータ:print x')を出力しました。しかし、実際にはそれを操作しようとしたタプルオブジェクトが返されました。だから私の関連する質問: 'multipicklist'がタプルとして扱われていることを知っていれば、どうやって上のような質問をしますか? – friendoflore

+0

そして最後に私が上記で試した( 'ANY()')は、 'multipicklist'が配列ではないので無効であると明示しました。 – friendoflore

答えて

0

あなたがあなた自身のtypecasterを記述する必要があります。 type castingに関するドキュメントを参照してください。すでに処理された基本タイプに新しいarray type casterを作成するだけで、逃げることができます。

関連する問題