PostgresとSQLAlchemyで配列列を使用してフィルタリングする

turtle_teacher:

int []列を持つ単純なテーブルがあり、その配列要素のいずれかが私の値と一致する行を選択できるようにしたいのですが、SQLAlchemyを使用してこれを行う方法を理解することはできません。やりたくない生のクエリ。

テーブル( "testuser")のスキーマは次のとおりです。

 Column  |          Type          |
---------+------------------------+
 id      | integer                |
 name    | character varying(250) |
 numbers | integer[]              |

これは、サンプルデータで次のように表示されます。

 id |  name   |    numbers
----+---------+---------------
  1 | David   | {25,33,42,55}
  2 | Salazar | {11,33,7,19}
  3 | Belinda | {32,6,20,23}
  4 | Casey   | {19,20,27,8}
  5 | Kathie  | {25,31,10,40}
  6 | Dianne  | {25,20,40,39}
  7 | Cortez  | {1,20,18,38}

ここに私が欲しいものを生成するSQLステートメントがあります。生のクエリを単に作成することなく、これをすべてPythonで実行したいと思います(25は単に例として使用されています)。

scrape=# select * from testuser where 25 = ANY(numbers);
 id |  name  |    numbers
----+--------+---------------
  5 | Kathie | {25,31,10,40}
  6 | Dianne | {25,20,40,39}
  1 | David  | {25,33,42,55}
(3 rows)

私がそれを書くことがわかった別の方法:

scrape=# select * from testuser where numbers @> ARRAY[25];
 id |  name  |    numbers
----+--------+---------------
  5 | Kathie | {25,31,10,40}
  6 | Dianne | {25,20,40,39}
  1 | David  | {25,33,42,55}
(3 rows)

これは、テーブルを生成するために使用したPythonコードです。

from sqlalchemy import Column, Integer, String
from sqlalchemy.dialects import postgresql
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker

Base = declarative_base()

class TestUser(Base):
    __tablename__ = 'testuser'
    id = Column(Integer, primary_key=True)
    name = Column(String(250))
    numbers = Column(postgresql.ARRAY(Integer))

engine = create_engine('postgresql://postgres:{pw}@localhost:5432/scrape'.format(pw=POSTGRES_PASSWORD))

Base.metadata.create_all(engine)

DBSession = sessionmaker(bind=engine)
session = DBSession()

testcases = [{"numbers": [25, 33, 42, 55], "name": "David"}, {"numbers": [11, 33, 7, 19 ], "name":     "Salazar"}, {"numbers": [32, 6, 20, 23 ], "name": "Belinda"}, {"numbers": [19, 20, 27, 8 ], "name": "Casey"},     {"numbers": [25, 31, 10, 40 ], "name": "Kathie"}, {"numbers": [25, 20, 40, 39 ], "name": "Dianne"},     {"numbers": [1, 20, 18, 38 ], "name": "Cortez"} ]

for t in testcases:
    session.add(TestUser(name=t['name'], numbers=t['numbers']))
session.commit()
ACV:

したがって、Postgres Array Comparatorを使用したいとします

query = session.query(TestUser).filter(TestUser.numbers.contains([some_int])).all()

または

query = session.query(TestUser).filter(TestUser.numbers.any(25)).all()

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

JPA基準APIを使用してpostgres配列列をフィルタリングする方法は?

分類Dev

JPA基準APIを使用してpostgres配列列をフィルタリングする方法は?

分類Dev

Postgres で JSON 配列をフィルタリングする方法

分類Dev

配列を使用して配列をフィルタリングするJavascript

分類Dev

NSPredicateを使用して辞書で配列をフィルタリングする

分類Dev

SQLを使用してPHPで配列をフィルタリングする

分類Dev

TypeScriptでToLowerCaseを使用して配列をフィルタリングする方法

分類Dev

OR句を使用してSwiftで配列をフィルタリングする方法

分類Dev

JSで深くネストされた配列を使用して配列をフィルタリングする

分類Dev

postgresqlで配列を使用して配列をフィルタリングする方法

分類Dev

selectとbool配列を使用して文字列の配列をフィルタリングします

分類Dev

ブールフィルタリングを使用して配列を作成する

分類Dev

配列を使用してテーブルをフィルタリングする

分類Dev

Swift:値として配列を使用して辞書をフィルタリングする

分類Dev

値として配列を使用して辞書をフィルタリングする

分類Dev

モーメントを使用して、「今日」と「明日」で配列をフィルタリングします

分類Dev

indexOfを使用して配列をフィルタリングする

分類Dev

RxJS演算子を使用して配列をフィルタリングする方法

分類Dev

JMESPathを使用して単純な配列をフィルタリングする

分類Dev

forEachを使用して配列をフィルタリングする

分類Dev

Angularjsを使用して配列をフィルタリングする方法

分類Dev

PHPを使用して配列をフィルタリングする方法は?

分類Dev

Angular:配列を使用してng-repeatをフィルタリングする

分類Dev

typeScript を使用して複数の配列をフィルタリングする

分類Dev

.mapと.filterを使用して、既存の配列をフィルタリングし、新しいフィルタリングされた配列を作成します

分類Dev

配列を等しい値でフィルタリングする

分類Dev

配列値で大きな配列をグループ化してフィルタリングする

分類Dev

配列をフィルタリングして別の配列と比較する方法を見つける方法

分類Dev

反応で配列をフィルタリングして表示する方法

Related 関連記事

  1. 1

    JPA基準APIを使用してpostgres配列列をフィルタリングする方法は?

  2. 2

    JPA基準APIを使用してpostgres配列列をフィルタリングする方法は?

  3. 3

    Postgres で JSON 配列をフィルタリングする方法

  4. 4

    配列を使用して配列をフィルタリングするJavascript

  5. 5

    NSPredicateを使用して辞書で配列をフィルタリングする

  6. 6

    SQLを使用してPHPで配列をフィルタリングする

  7. 7

    TypeScriptでToLowerCaseを使用して配列をフィルタリングする方法

  8. 8

    OR句を使用してSwiftで配列をフィルタリングする方法

  9. 9

    JSで深くネストされた配列を使用して配列をフィルタリングする

  10. 10

    postgresqlで配列を使用して配列をフィルタリングする方法

  11. 11

    selectとbool配列を使用して文字列の配列をフィルタリングします

  12. 12

    ブールフィルタリングを使用して配列を作成する

  13. 13

    配列を使用してテーブルをフィルタリングする

  14. 14

    Swift:値として配列を使用して辞書をフィルタリングする

  15. 15

    値として配列を使用して辞書をフィルタリングする

  16. 16

    モーメントを使用して、「今日」と「明日」で配列をフィルタリングします

  17. 17

    indexOfを使用して配列をフィルタリングする

  18. 18

    RxJS演算子を使用して配列をフィルタリングする方法

  19. 19

    JMESPathを使用して単純な配列をフィルタリングする

  20. 20

    forEachを使用して配列をフィルタリングする

  21. 21

    Angularjsを使用して配列をフィルタリングする方法

  22. 22

    PHPを使用して配列をフィルタリングする方法は?

  23. 23

    Angular:配列を使用してng-repeatをフィルタリングする

  24. 24

    typeScript を使用して複数の配列をフィルタリングする

  25. 25

    .mapと.filterを使用して、既存の配列をフィルタリングし、新しいフィルタリングされた配列を作成します

  26. 26

    配列を等しい値でフィルタリングする

  27. 27

    配列値で大きな配列をグループ化してフィルタリングする

  28. 28

    配列をフィルタリングして別の配列と比較する方法を見つける方法

  29. 29

    反応で配列をフィルタリングして表示する方法

ホットタグ

アーカイブ