dbcli / dbcli/litecli

FR: support environment variables in (favourite) queries

Đang mở
#163 0 bình luận 0 reaction 0 người được giao Xem trên GitHub
Ngôn ngữ chính
Python
Star
3.3k
Fork
95
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Mô tả

I'd love to see support for using environment variables in favourite queries, or even in all queries.

The use case is that I have several very similar databases where favourite queries all need to take a parameter to indicate what 'variant' of the database I'm currently using, _or_ I have to copy configuration files for each database file and alter one value in each query filter.

Say, the different values are `'foo'` and `'bar'`, and I have to either do:

```ini
favquery1 = '''select ...
from some_table
where parameter='$1'
and other_paramater='$2'
'''
favquery2 = '''select ...
from some_other_table sot inner join a_third_table att on sot.id = att.sot_id
where sot.parameter='$1'
and att.column_name ='$2'
'''
```

and then run `\f favquery1 foo 42` and `\f favquery2 bar 45`, **or** I copy the configuration file multiple times and hardcode the parameter in each.

If, instead, I could use environment variables (syntax suggestion, feel free to come up with better syntax, this is based on bash):

```ini
favquery1 = '''select ...
from some_table
where parameter='${PARAMETER}'
and other_paramater='$1'
'''
favquery2 = '''select ...
from some_other_table sot inner join a_third_table att on sot.id = att.sot_id
where sot.parameter='${PARAMETER}'
and att.column_name ='$1'
'''
```

and then start each `litecli` instance with a different environment variable and use the exact same favourites for each database:

```sh
$ PARAMETER=foo litecli foo_database.sqlite
foo_database.sqlite> \f favquery1 42
```

and

```sh
$ PARAMETER=bar litecli bar_database.sqlite
bar_database.sqlite> \f favquery1 42
```

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Hướng nghiên cứu

Bắt đầu bằng việc xác định cách litecli xử lý các truy vấn yêu thích và điểm bắt đầu cho các lệnh \f; issue không nêu tên tệp mã nguồn hay các bài kiểm thử. Đọc cách các đối số $1/$2 hiện có được thay thế, sau đó làm rõ liệu việc mở rộng biến môi trường chỉ áp dụng cho các truy vấn yêu thích hay cho tất cả truy vấn. Công việc được xem là hoàn tất khi cú pháp đã thống nhất hoạt động trên các biến thể cơ sở dữ liệu được minh họa mà không làm hỏng các tham số truy vấn hiện có.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
python, sqlite
Lĩnh vực
cli, database
Loại issue
Tính năng
Độ khó
5/5
Thời gian dự kiến
Hơn một tuần
Mức độ hoạt động
Đình trệ
Độ rõ ràng
Khá rõ ràng
Mức phù hợp với người mới
30/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.