Bagaimana cara menambahkan filter seperti pada SQL untuk memilih nilai yang BUKAN NULL dari kolom tertentu?
SELECT *
FROM table
WHERE YourColumn IS NOT NULL;
Bagaimana saya bisa melakukan hal yang sama dengan filter SQLAlchemy?
select = select(table).select_from(table).where(all_filters)
python
sqlalchemy
salamey
sumber
sumber
all_filters
disini? Mengapaselect_from
?Jawaban:
column_obj != None
akan menghasilkanIS NOT NULL
kendala :atau gunakan
isnot()
(baru di 0.7.9):Demo:
>>> from sqlalchemy.sql import column >>> column('YourColumn') != None <sqlalchemy.sql.elements.BinaryExpression object at 0x10c8d8b90> >>> str(column('YourColumn') != None) '"YourColumn" IS NOT NULL' >>> column('YourColumn').isnot(None) <sqlalchemy.sql.elements.BinaryExpression object at 0x104603850> >>> str(column('YourColumn').isnot(None)) '"YourColumn" IS NOT NULL'
sumber
is
tidak dapat dibebani oleh kelas khusus!=
.Mulai versi 0.7.9 Anda dapat menggunakan operator filter
.isnot
daripada membandingkan batasan, seperti ini:query.filter(User.name.isnot(None))
Metode ini hanya diperlukan jika pep8 menjadi perhatian.
sumber: dokumentasi sqlalchemy
sumber
NULL
tidak valid seperti RHS!=
dalam SQL dan menggunakanisnot
lebih baik menyampaikan niat Anda untuk apa yang Anda inginkan dari pernyataan yang dihasilkan.!= NULL
, meskipun Anda menggunakancolumn != None
sisi Python; kamu mendapatkanIS NOT NULL
. Namun, menggunakan.isnot()
memungkinkan Anda memaksakanIS NOT
tipe lain (pikirkan.isnot(True)
tentang kolom boolean, misalnya).Jika ada orang lain yang bertanya-tanya, Anda dapat menggunakan
is_
untuk menghasilkanfoo IS NULL
:sumber