Чтобы создать выпадающий список в Python и заполнить его данными из PostgreSQL, можно использовать разные технологии в зависимости от того, для какого типа приложения вы его создаете. Например, если вы создаете веб-приложение, то можно использовать Flask или Django в комбинации с HTML и JavaScript.
Допустим, у нас есть веб-приложение на Flask, и мы хотим создать выпадающий список с данными из PostgreSQL. Ниже пример кода, иллюстрирующий как это можно сделать:
```python
from flask import Flask, render_template
import psycopg2
app = Flask(__name__)
def get_data():
conn = psycopg2.connect(database="your_database", user="your_username", password="your_password", host="localhost", port="5432")
cur = conn.cursor()
cur.execute("SELECT column_name FROM your_table;")
data = cur.fetchall()
cur.close()
conn.close()
return data
@app.route('/')
def index():
data = get_data()
return render_template('index.html', data=data)
if __name__ == '__main__':
app.run(debug=True)
```
Соответственно в вашем файле `index.html` должен быть HTML код с выпадающим списком (следовательно в форме `select`), который выглядит примерно так:
```html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="/some_endpoint" method="post">
<label for="dropdown">Choose an option:</label>
<select id="dropdown" name="dropdown">
{% for item in data %}
<option value="{{ item[0] }}">{{ item[0] }}</option>
{% endfor %}
</select>
<input type="submit" value="Submit">
</form>
</body>
</html>
```
Теперь рассмотрим, как настроить связанные выпадающие списки. Для этого нам понадобится JavaScript, чтобы обновлять второй выпадающий список на основе выбранного значения в первом. В Flask приложении это можно сделать с помощью AJAX запроса, который будет отправлен на сервер для получения данных для второго списка из другой таблицы в зависимости от выбора.
Вот пример JavaScript кода, который можно добавить в ваш `index.html`:
```html
<script>
document.getElementById('first_dropdown').addEventListener('change', function() {
var value = this.value;
fetch('/update-dropdown?choice=' + value)
.then(function(response) {
return response.json();
})
.then(function(data) {
var secondDropdown = document.getElementById('second_dropdown');
secondDropdown.innerHTML = '';
data.forEach(function(item) {
var option = document.createElement('option');
option.value = item;
option.textContent = item;
secondDropdown.appendChild(option);
});
});
});
</script>
```
И соответствующий маршрут в вашем Flask приложении:
```python
@app.route('/update-dropdown')
def update_dropdown():
choice = request.args.get('choice', type=str)
# Здесь логика получения данных из второй таблицы на основе выбранного значения в первом списке
data = get_data_for_second_dropdown(choice)
return jsonify(data)
```
Функцию `get_data_for_second_dropdown` вам нужно будет реализовать самостоятельно, она должна соединяться с базой данных, запрашивать данные и возвращать их в формате, который можно будет легко использовать в JavaScript (обычно это JSON).
Не забудьте импортировать `jsonify` и `request` модули из `flask` для работы с JSON и запросами соответственно.