Python Flask - wyświetlenie rekordów dodanych do bazy danych

Python Flask - wyświetlenie rekordów dodanych do bazy danych
PF
  • Rejestracja:ponad 3 lata
  • Ostatnio:około 3 lata
  • Postów:27
0

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

lion137
  • Rejestracja:około 8 lat
  • Ostatnio:około 7 godzin
  • Postów:4935
0

używając flaska oraz podobno, (wytłuszczenie moje :-)) metody GET

Ha, ha, ha; ale na poważnie, pokaż kod, co tam urzeźbiłeś?


edytowany 1x, ostatnio: lion137
Shalom
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
0

Nie bardzo rozumiem gdzie jest problem.

Kopiuj
@app.route('/costam', methods=['GET'])
def records():
    return load_stuff_from_db()

"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
szatkus
  • Rejestracja:ponad 21 lat
  • Ostatnio:ponad 3 lata
  • Postów:227
1

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ć.


𐤃𐤐𐤀
PF
To jest odpowiedź w stylu napiszę cokolwiek żeby się przyczepić. Znalazłem tutoriale jak się połączyć z posgresqlem i nawet dodaję tam jakieś rekordy tylko nie potrafię ich wyświetlić flaskiem
PF
  • Rejestracja:ponad 3 lata
  • Ostatnio:około 3 lata
  • Postów:27
0

@lion137:

Kopiuj
"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)
    
edytowany 1x, ostatnio: Python_fanboy
PF
Bardzo dziwnie się wkleiło
lion137
Yhm, powalcz x formatowaniem
Tasmanian Devil
"Twój post prawdopodobnie zawiera niesformatowany kod - nie wklejaj bezpośrednio kodu, ale obejmuj go w odpowiednie znaczniki! (jestem botem, ten komentarz został dodany automatycznie)"
LibrarlaN
  • Rejestracja:ponad 3 lata
  • Ostatnio:ponad 3 lata
  • Postów:4
0

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:

Kopiuj
response = flask.jsonify({ 'status': True, 'data': data })
response.status_code = 200
return response
edytowany 1x, ostatnio: LibrarlaN
PF
  • Rejestracja:ponad 3 lata
  • Ostatnio:około 3 lata
  • Postów:27
0

@LibrarlaN: Dzięki, sprawdzę sobie ten moduł

PF
  • Rejestracja:ponad 3 lata
  • Ostatnio:około 3 lata
  • Postów:27
0

@Shalom: Dostaję błąd przy tym:
"load_stuff_from_db"

Shalom
Niemożliwe! U mnie działa. Może brakuje ci from mojkodzik import load_stuff_from_db?
masochista
  • Rejestracja:około 6 lat
  • Ostatnio:8 dni
  • Lokalizacja:Warszawa
  • Postów:77
0

@Shalom: Uprzedzę odpowiedź - ImportError: No module named mojkodzik :D

edytowany 1x, ostatnio: masochista
PF
  • Rejestracja:ponad 3 lata
  • Ostatnio:około 3 lata
  • Postów:27
0

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?

Kopiuj
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)

LibrarlaN
  • Rejestracja:ponad 3 lata
  • Ostatnio:ponad 3 lata
  • Postów:4
1

@Python_fanboy:

W twoim przykładzie, "connect()" zwraca funkcję "print" (a dokładniej odpowiedź tej funkcji) jako odpowiedź serwera. Używaj zamiast tego, coś podobnego:

Kopiuj
return 'text'

P.S. Także możesz zrobić, żeby użytkownik otrzymywał html-stronę:

Kopiuj
return render_template('index.html', variable='text')

lub json-obiekt:

Kopiuj
return jsonify({ 'key': 'data' })
edytowany 5x, ostatnio: LibrarlaN

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.