Stworzyłem program dodający rekordy do bazy danych postgres, używając flaska oraz podobno metody GET potrzebuję wyświetlić wyniki(rekordy). Używając flaska umiem jedynie wyświetlić zdania typu "Hello word". Proszę o wskazówki jak mogę podejść do tego problemu

- Rejestracja:około 21 lat
- Ostatnio:prawie 3 lata
- Lokalizacja:Space: the final frontier
- Postów:26433
Nie bardzo rozumiem gdzie jest problem.
@app.route('/costam', methods=['GET'])
def records():
return load_stuff_from_db()

- Rejestracja:ponad 21 lat
- Ostatnio:ponad 3 lata
- Postów:227
To jest takie pytanie w stylu "jak wysłać człowieka na księżyc?". Poszukaj sobie tutoriala jak się połączyć z bazą PSQL w Pythonie. Z tego co pamiętam to tam zwykle jest zwracana lista krotek czy coś, łatwo to zmapować na dicty, a z tym Flask już powinen sobie sam poradzić.
- Rejestracja:ponad 3 lata
- Ostatnio:około 3 lata
- Postów:27
"from flask import Flask, redirect, url_for, request
import psycopg2
from config import config
#dodać tutaj flaska "GET"
#wyświtlenie hello word
#zapytanie ma uzupełniać tabelę
#wszystko w osobnych branch
app = Flask(__name__)
#@app.route("/")
#def index():
# return "Hello word"
#if __name__ == "__main__":
# app.run(debug = True)
@app.route("/database", methods=["GET", "POST"])
def connect():
return
connection = None
try:
params = config()
print('Connecting to the postgreSQL database ...')
connection = psycopg2.connect(**params)
# create a cursor
crsr = connection.cursor()
print('PostgreSQL database version: ')
crsr.execute('SELECT version()')
ts = open("table_series.sql", "r")
tc = open("table_cardata.sql", "r")
fs = open("fill_series.sql", "r")
fc = open("fill_cardata.sql", "r")
sql_command = ts.read()
crsr.execute(sql_command)
sql_command = tc.read()
crsr.execute(sql_command)
sql_command = fs.read()
crsr.execute(sql_command)
sql_command = fc.read()
crsr.execute(sql_command)
connection.commit()
db_version = crsr.fetchone()
print(db_version)
crsr.close()
except(Exception, psycopg2.DatabaseError) as error:
print(error)
finally:
if connection is not None:
connection.close()
print('Database connection terminated.')
if __name__ == "__main__":
app.run(debug=True)



- Rejestracja:ponad 3 lata
- Ostatnio:ponad 3 lata
- Postów:4
Jest taki moduł — sqlalchemy. A nawet specjalnie do pracy z Flask — flask_sqlalchemy. Z jego pomocą możesz podłączyć się do bazy danych i wykonywać różne polecenia. Na przykład, otrzymać wszystkie dane z bazy (SELECT * FROM db_name;) i potem zwrócić wynik w formacie json:
response = flask.jsonify({ 'status': True, 'data': data })
response.status_code = 200
return response
- Rejestracja:ponad 3 lata
- Ostatnio:około 3 lata
- Postów:27
@LibrarlaN: Dzięki, sprawdzę sobie ten moduł
- Rejestracja:ponad 3 lata
- Ostatnio:około 3 lata
- Postów:27
@Shalom: Dostaję błąd przy tym:
"load_stuff_from_db"

- Rejestracja:około 6 lat
- Ostatnio:około 6 godzin
- Lokalizacja:Warszawa
- Postów:77
@Shalom: Uprzedzę odpowiedź - ImportError: No module named mojkodzik
:D
- Rejestracja:ponad 3 lata
- Ostatnio:około 3 lata
- Postów:27
Gdy używam tego kodu do stworzenia tabel i dodania rekordów jest wszystko okey, ale gdy używam go do wyświetlania tych danych jest taki problem:
"TypeError: The view function for 'connect' did not return a valid response. The function either returned None or ended without a return statement."
Nie wiem dlaczego tak się dzieje, czy to oznacza, że nie mogę tak pobrać danych bo connect nie zwraca prawidłowych wartości?
import psycopg2
from config import config
from flask import Flask, render_template, request
app = Flask(__name__)
@app.route('/', methods=['GET'])
def connect():
connection = None
try:
params = config()
connection = psycopg2.connect(**params)
# create a cursor
crsr = connection.cursor()
crsr.execute("SELECT * FROM db;")
data = crsr.fetchall()
crsr.close()
return print(data)
except:
pass
if __name__ == "__main__":
app.run(debug=True)

- Rejestracja:ponad 3 lata
- Ostatnio:ponad 3 lata
- Postów:4
W twoim przykładzie, "connect()" zwraca funkcję "print" (a dokładniej odpowiedź tej funkcji) jako odpowiedź serwera. Używaj zamiast tego, coś podobnego:
return 'text'
P.S. Także możesz zrobić, żeby użytkownik otrzymywał html-stronę:
return render_template('index.html', variable='text')
lub json-obiekt:
return jsonify({ 'key': 'data' })