Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: python kalkulator BMI
Forum PHP.pl > Inne > Hydepark
Andrix
Witam pisze projekt na zaliczenie lecz stanąłem w martwym punkcie i nie wiem jak sobie z tym poradzić. wszystko śmiga lecz jak obejść by nie krzyczało mi ze ta tabela o tej nazwie jest zajęta a nie chce jej dropowac co chwile.

PS: żeby nie było najpierw przeszukuje google, a potem pytam smile.gif
  1. cur.execute("CREATE TABLE Kobieta (Wzrost varchar, Wiek varchar, Plec varchar, BMI varchar, zawartosc_tluszczu varchar);")
  2. psycopg2.ProgrammingError: relation "kobieta" already exists


EDIT:
Oraz mam pytanie, jak wstawić podaną zmienna (typu wzrost, wagę, wiek, pleć, wyliczone BMI oraz zawartość tłuszczu) w tabele ?
Chodzi o to ze gdy ktoś poda te dane i na końcu potwierdzi że chce wstawić swoje dane do naszej bazy by wstawiło te że podane dane w tabele.
Jest takie coś możliwe ? Oraz w komentarzach zadałem dodatkowe nurtujące mnie pytania.

aktualnie Kod wygląda tak:
  1. #-*- coding: utf-8 -*-
  2. #importowanie potrzebnych bibliotek
  3. from easygui import *
  4. import psycopg2
  5. import sys
  6. #praca na bazie danych
  7. try:
  8. conn = psycopg2.connect("dbname='****' user='****' host='****' password='****'");
  9. except:
  10. msg_error = "Błąd - Nie moge polaczyć sie z bazą!!"
  11. title_error = "Błąd - Nie moge polaczyć sie z bazą!!"
  12. msgbox(msg_error, title_error, ok_button="OK")
  13. cur = conn.cursor()
  14. cur.execute("CREATE TABLE BMI (Wzrost varchar NOT NULL, Wiek varchar NOT NULL, Plec varchar NOT NULL, BMI varchar NOT NULL, Zawartosc_Tluszczu varchar NOT NULL);")
  15. conn.commit()
  16. #wybor programu lub wczytanie danych z bazy
  17. msg_choice = "Mam uruchomić program czy wczytać dane z bazy online?"
  18. title_choice = "Co chcesz uruchomić ?"
  19. choices_choice = ["Program", "Baza"]
  20. choice = choicebox(msg_choice, title_choice, choices_choice)
  21. #baza
  22. #program
  23. # TĄ CZĘŚĆ KODU(W DÓŁ) CHCIAŁ BYM ZAPISAĆ JAKO FUNKCJE KTÓRĄ BEDE CHCIAŁ WYWOŁAĆ WYŻEJ W WYBORZE CZY ODPALIĆ PROGRAM CZY WCZYTAĆ Z BAZY LECZ NIE WIEM JAK TO ZROBIĆ.
  24. # PODOBNIE WYŻEJ BEDE CHIAŁ ZDEFINIOWAC FUNKCJE BAZA I TAK SAMO WYWOLAC JA WYZEJ PRZY WYBOZE.
  25. msg = "Sprawdz swoje BMI oraz zawartość tkanki tłuszczowej"
  26. title = "Kalkulator BMI (Body Mass Index) oraz zawartość tkanki tłuszczowej"
  27. fieldNames = ["Podaj swoją wagę [kg]", "Podaj swój wzrost [cm]", "Podaj swój wiek", "Podaj swoja pleć [M = Mężczyzna] [K = Kobieta]"]
  28. fieldValues = []
  29. fieldValues = multenterbox(msg, title, fieldNames)
  30. #wczytywanie dancyh
  31. weight = float(fieldValues[0])
  32. growth = float(fieldValues[1])
  33. age = float(fieldValues[2])
  34. sex = fieldValues[3]
  35. if fieldValues[3]=="k":
  36. sex = 1
  37. else:
  38. sex = 0
  39. #podstawianie pod wzór
  40. BMI = float(weight)/(float(growth)*float(growth)/10000)
  41. BMI = round(BMI*10)/10
  42. FAT = (1.2*BMI) + (0.23*age) - (10.8*sex) - 5.4
  43. #wyprowadzanie wyniku
  44. if BMI < 18.5:
  45. msg1 = "Twoje BMI wynosi: " + str(BMI)+ ", zawartość tłuszczu wynosi: " + str(FAT)+ " % Jesteś zbyt chudy/a jak na swój wzrost. Czy chesz wczytać swój wynik do naszej bazy ?"
  46. choices = ["Tak", "Nie"]
  47. choice = choicebox(msg1, title, choices)
  48. #if choices =="Tak"
  49. #i tu nie wiem czy dobrze robie ? i jak w VALUES zdefiniować te zmienne
  50. #cur.execute("INSERT INTO BMI (Wzrost, Wiek, Plec, BMI, Zawartosc_Tluszczu) VALUES(%s, %s)"
  51. #else:
  52. # sys.exit(0)
  53. elif BMI>25:
  54. msg1 = "Twoje BMI wynosi: " + str(BMI)+ ", zawartość tłuszczu wynosi: " + str(FAT)+ "% Jak na swój wzrost to powinieneś/powinnaś schudnąć. Czy chesz wczytać swój wynik do naszej bazy ?"
  55. choices = ["Tak", "Nie"]
  56. choice = choicebox(msg1, title, choices)
  57. else:
  58. msg1 = "Twoje BMI wynosi: " + str(BMI)+ ", zawartość tłuszczu wynosi: " + str(FAT)+ "% Z twoją wago jest wszystko w porządku. Czy chesz wczytać swój wynik do naszej bazy ?"
  59. choices = ["Tak", "Nie"]
  60. choice = choicebox(msg1, title, choices)


jakiś pomysł jak bym mógł to zrobić?

PS: nie chodzi mi o to by ktoś mi napisał no bo i po co, lecz by nakierował co robię źle :
kosmowariat
jeśli chodzi o tabelkę

  1. CREATE TABLE IF NOT EXISTS
Andrix
ok coś mam, lecz to stwierdzenie odnosi się do biblioteki sqlite3(chyba) lecz ja mam bibliotekę psycopg2 i jak uruchamiam krzyczy mi
  1. cur.execute("CREATE TABLE IF NOT EXISTS BMI(Wzrost varchar NOT NULL, Wiek varchar NOT NULL, Plec varchar NOT NULL, BMI varchar NOT NULL, Zawartosc_Tluszczu varchar NOT NULL);")
  2. psycopg2.ProgrammingError: syntax error at OR near "NOT"
  3. LINE 1: CREATE TABLE IF NOT EXISTS BMI(Wzrost varchar NOT NULL, Wiek...


Ogólnie mój program ma tak działać.
1. Uruchamia się program tworzy tabele jeżeli nie ma, jeżeli jest omija ten krok.
2. Jak się uruchomi wyskoczy okienko z easygui i zapyta co chcesz uruchomić ? (działa lecz nie wiem jak zdefiniować jak wybiorę program czy baza by się uruchomiało właśnie to.)
-Program
-Wczytać naszą bazę danych.
3. Jeżeli program to uruchomi się program do obliczenia BMI.
4. Jeżeli baza to wyświetli posortowaną bazę powiedzmy w kolejność kobiet.
Ad3. Jeżeli już wpiszemy nasze dane program wszystko obliczy, zada nam pytanie co chcemy zrobić ?Wczytać te podane oraz wyliczone dane w naszą bazę którą zrobiliśmy (bądź nie) w punkcie 1. I jak wczytać zmienne podane wcześniej do bazy ? Jeżeli wybierzemy nie program się zamknie.

Bardzo będę wdzięczny jak ktoś w jaki kol wiek sposób pomoże.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.