Python 2.6.6 ja SQL SELECT JA INSERT

Eli ihan SQL-perusteissa ollaan, mutta Pythonilla koskaan toistaiseksi tietokantoja käsitellyt, ja palvelimella on käytössä Python 2.6.6. Voisiko joku pistää malliksi, miten tietokannasta saa haettua ensinnäkin Selectillä kyseisessä Python-versiossa tietueita, ja miten niitä saa INSERTin kanssa sinne lisätyksi.

Lisäksi Select COUNT(*) FROM Table, tai vastaava Python koodi, mistä saisi tietueiden lukumäärän int-tyyppisenä arvona ulostulona.

10

925

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • Turbo-Urpo1

      Olen jakanut tämän ohjeen kolmeen (3) erilliseen tiedostoon, joista ensimmäinen tässä.

      Tässä kuvassa on esimerkki, jossa sattuman varaisesti valitaan automerkki ja sille hinta, lisättäväksi "cars" tietokantaan. Tämän tarkoitus on selventää asiaa kuinka muuttujan sisältönä oleva arvo listään tietokantaan, tämähän on pakko osata jokaisen.

      https://i.postimg.cc/v8XT2kxR/Valinta-004.png

      En laita tähän tuota koodia, kun se niin helposti saa aikaan koko viestin poiston. Joten menettele seuraavasti:

      Kirjoita koodi, ja tallenna se [ insert-table.py ] nimellä
      Anna suoritusoikeudet [ chmod x insert-table.py ]

      Laitan tuossa myöhemin vielä kahden tiedoston koodit, joista toinen luo [ testi ] tietokannan ja lisää siihen tässä tarvittavan [ cars ] taulukon.

      • Turbo-Urpo1

        Huomaa että et voi sitä suorittaa vielä, koska tietokantaa ei ole olemassa, mutta kun se tässä myöhemin tulee, suoritat sen näin:

        ./insert-table.py

        Ja tuohan edellyttää sitä että tiedostolle on annettu suoritusoikeudet

        chmod x insert-table.py

        Ja nämä käskyt suoritat siinä kansiossa missä tiedostotkin ovat, tai muutat polut siaintia vastaaviksi. Ilman suoritusoikeuksia python tiedosto ajetaan tulkin mukana näin:

        python ./insert-table.py

        No se siitä.


    • Turbo-Urpo1
      • Turbo-Urpo1

        Tuohon olisi pitänyt yhdistää tuo COUNT, mutta nyt tässä erikseen. Eli kuvan koodissa listataan Audin merkkien määrä tietokannassa, ja kaikkien merkintöjen määrä.
        https://i.postimg.cc/Z0kPCqkQ/Valinta-008.png

        Huomasithan että voit suorittaa tuon ensimäisen vaikka kuinka monta kertaa ja aina tulee uusi arvottu automerkki listaan lisää.


      • Turbo-Urpo1
        Turbo-Urpo1 kirjoitti:

        Tuohon olisi pitänyt yhdistää tuo COUNT, mutta nyt tässä erikseen. Eli kuvan koodissa listataan Audin merkkien määrä tietokannassa, ja kaikkien merkintöjen määrä.
        https://i.postimg.cc/Z0kPCqkQ/Valinta-008.png

        Huomasithan että voit suorittaa tuon ensimäisen vaikka kuinka monta kertaa ja aina tulee uusi arvottu automerkki listaan lisää.

        Tässä vielä on laskettu montako prosentia Audin osuus on listatuista:
        https://i.postimg.cc/KvJL6QjV/Valinta-009.png


    • Turbo-Urpo1

      Ja tässä on tuo viimmeinen osa, jossa se tietokanta pistetään alulle.

      https://i.postimg.cc/XYNYf8Yj/Valinta-007.png

      Koreilemattoman yksinkertaista, vai mitä.

      Minä käytin näitä tiedostonimiä,
      create-table.py
      insert-table.py
      select-table.py

      Luvettelin nuo mikäli näihin joutuu jatkossa viittaamaan.

    • tossajotain

      Tarvitsee jonkun MySQL-kikkareen Pythoniin, esimerkiksi PyMySQL:n.

      Sitten aukaistaan tietokanta:

      conn=pymysql.connect(host=palvelin,port=3306,user=käyttäjä,passwd=salasana,db=tietokanta)

      Muodostetaan sql-lause inserttiin, jossa laitetaan tauluun "nimet" nimi "Pertti".

      lisattavanimi="Pertti"
      sql="INSERT INTO nimet(nimi) VALUES ('{0}');".format(lisattavanimi)

      Suoritetaan sql:

      cur=conn.cursor()
      cur.execute(sql)

      Tarkastetaan onnistuiko:

      if not cur.lastrowid:
          ->epäonnistui

      Lopuksi commit ja sulkemiset:

      conn.commit()
      cur.close()
      conn.close()

      Hakeminen kannasta, avaukset ja sulkemiset kuten edellisessä, mutta sql-lause:

      haettavanimi="Pertti"
      sql = "SELECT * FROM nimet WHERE nimi='{0}';".format(haettavanimi)

      cur=conn.cursor()
      cur.execute(sql)

      Jos löytyi yhtään:

      if cur.rowcount>0:
          haetut=list(cur.fetchall())

      Tämän jälkeen kannasta haetut rivit pitäisi olla listalla "haetut".

      Esimerkkejä: https://www.programcreek.com/python/example/53260/pymysql.connect

      • f-stringit

        Tämä kommentti ei auta aloittajaa yhtään, mutta Pythonin versiosta 3.6 lähtien on voitu käyttää ns. f-stringejä, joilla esimerkiksi noiden sql-lauseiden muodostaminen muuttuu hieman kätevämmäksi.

        Esimerkiksi:

        sql="INSERT INTO nimet(nimi) VALUES ('{0}');".format(lisattavanimi)

        Voidaan kirjoittaa lyhyemmin muodossa:

        sql2=f"INSERT INTO nimet(nimi) VALUES ('{lisattavanimi}');"

        Lisää aiheesta https://cito.github.io/blog/f-strings/


    • No joo, kiitti paljon vastanneille! Ongelmaksi koitui, että mun verkkoisännällä ei ollut mysli-moduulia tukena Pythonissa. Toteutin verkkosovellukseni PHP:llä lopulta. Julkaisin Palindromikoneeni ensimmäisen version yleisölle, missä oli Palindromin tarkastus ja muut härpäkkeet toteutettu Pythonilla, mutta lisättyäni tietokannan tavoitteena kerätä Suomen laajin Palindromitietokanta, toteutin lopulta kaiken PHP:llä, koska verkkoisäntäni tukee sitä pääsääntöisesti.

      Suora osoite sovellukseeni on https:\\www.tuntikirjuri.net/Palindromikone

      Meille pimeän puolen pitkän linjan nettikäyttäjille, joilla ei ole mitään elämää netin ulkopuolella, lisää haastetta, eikö?

      • Turbo-Urpo1

        No joo, PHP:lla tuon olisin minäkin tehnyt, ja kun sivusi muuten on WP-päällä oikein hyvin sopii senkin vuoksi. Olisinpa saattanut yrittää käyttää palindromityyli.css tyylitiedoston sijasta WP:een style.css tiedostoakin, jotta olisi yhtenevän näköinen kotisivusi kanssa.

        Kommentoin oikolukematta, jos julkaset, korjaa virheet ennen näytille panoa.


    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. "Miko Bergbom, miksi euron bensa maksaa kaksi euroa?"

      Valtakunnan suurin kaupallinen porvarimediakin kyselee nyt miksi perussuomalaisset ovat rikkoneet tärkeimmän vaalilupauk
      Maailman menoa
      195
      6721
    2. SDP: "On hyvä että bensiinin hinta nousee"

      Suurin oppositiopuolue SDP on mielissään siitä, että bensan hinta nousee suomalaisille. https://www.iltalehti.fi/polit
      Maailman menoa
      194
      3456
    3. Mistä ihmeestä sitä viirasi?

      Oliko tuo Timo Kalima hyvä silmälääkäri? Mikähän hänen silmiinsä osui kun piti mennä tuollaista tekemään. Kaikki näytti
      Jyväskylä
      26
      3219
    4. "Mieheksi ja naiseksi hän heidät loi."

      Räsäsen tuomio on iso harppaus woke-valtioksi. – Tässä maassa on nyt selvästi kiellettyjä sanoja ja ajatusrikoksia. –
      Maailman menoa
      167
      2167
    5. Partamies hoi!

      En aio häiritä jos on mukavampi olla hiljaa tai jos siellä kaukana sinun paikkakunnalla on jo joku hoito. Miten olisi re
      Ikävä
      40
      1737
    6. SDP haluaa tappaa maaseudun - bensan hinta mahdollisimman korkealle

      Maaseudulla auto on välttämätön asia, ja lähes kaikilla on bensa-autot. Kuinka tyhmä pitää olla jos äänestää demareita?
      Maailman menoa
      85
      1687
    7. Outoa toimintaa Tuhannen taalan yrittäjällä

      Ihmiset ympäri Suomen on kyselleet, että miksi tämä yrittäjä hoitaa ilkivalta-asiaa netissä kun se kuuluisi poliisille.
      Haapavesi
      116
      1424
    8. Martina Aitolehti pistää luun kurkkuun Erikoisjoukot-kouluttajalle - Ei usko tätä!

      Martina Aitolehti on persoona, joka herättää monessa tunteita. Hänen yksityiselämänsä on noussut kohuotsikoihin mm. eläm
      Suomalaiset julkkikset
      14
      1056
    9. Etkö vieläkään ole löytänyt ketään??

      😅😅😅😅😅😅😅
      Ikävä
      115
      924
    10. Riiko Sakkinen läväyttää totuuden - Tästä syystä keskeytti Farmi-kuvaukset

      Riikon toiminta hämmensi... Kuvataiteilija teki yllättävän päätöksen ja halusi lopettaa Farmi Suomi -leikin kesken. Rii
      Tv-sarjat
      16
      905
    Aihe