`table.get(column=value)` option for retrieving things not by their primary key
Maintainer thường phản hồi trong vòng 1 ngày
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 2/5
- Thời gian dự kiến
- 1-3 giờ
- Mức phù hợp với người mới
- 78/100
Hướng nghiên cứu
Bắt đầu trong sqlite_utils/db.py, khoảng dòng 1495, nơi phương thức Table.get() hiện có được định nghĩa, và xem xét hành vi tra cứu theo vị trí hiện tại của nó. Thêm hỗ trợ tra cứu cột bằng từ khóa, khớp với ví dụ unique-name của issue, đồng thời giữ nguyên hành vi của NotFoundError; sau đó chạy các bài kiểm thử cơ sở dữ liệu hiện có và bổ sung coverage cho một lần tra cứu thành công và một hàng không tồn tại.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
This came up working on this feature:
I have a table with this schema:
CREATE TABLE [collections] (
[id] INTEGER PRIMARY KEY,
[name] TEXT,
[model] TEXT
);
CREATE UNIQUE INDEX [idx_collections_name]
ON [collections] ([name]);
So the primary key is an integer (because it's going to have a huge number of rows foreign key related to it, and I don't want to store a larger text value thousands of times), but there is a unique constraint on the name - that would be the primary key column if not for all of those foreign keys.
Problem is, fetching the collection by name is actually pretty inconvenient.
Fetch by numeric ID:
try:
table["collections"].get(1)
except NotFoundError:
# It doesn't exist
Fetching by name:
def get_collection(db, collection):
rows = db["collections"].rows_where("name = ?", [collection])
try:
return next(rows)
except StopIteration:
raise NotFoundError("Collection not found: {}".format(collection))
It would be neat if, for columns where we know that we should always get 0 or one result, we could do this instead:
try:
collection = table["collections"].get(name="entries")
except NotFoundError:
# It doesn't exist
The existing .get() method doesn't have any non-positional arguments, so using **kwargs like that should work:
- Ngôn ngữ chính
- Python
- Star
- 2.2k
- Fork
- 172
- Merge trung bình
- 9 phút
- Pull request đã merge (30 ngày)
- 1
Chuẩn bị môi trường
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của simonw/sqlite-utils
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
simonw/sqlite-utils#876 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 90/100
simonw/sqlite-utils#872 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
simonw/sqlite-utils#857 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 92/100
simonw/sqlite-utils#849 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
bug documentation help wanted
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 88/100
simonw/sqlite-utils#493 · 5 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của simonw/sqlite-utils
Issue tương tự
-
correction metadata
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
acl-org/acl-anthology#10104 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
bug status/needs-triage
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 86/100
prowler-cloud/prowler#12885 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Bug in GaussianTailProbabilityCalibrator: running_statistics=False still uses a windowed varianceĐang mởbug good first issue
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 88/100
selimfirat/pysad#107 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
bug ci-failure high priority
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 88/100
vllm-project/vllm-omni#8194 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 88/100
Maintainer thường phản hồi trong vòng 1 ngày