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.
Python 2.6.6 ja SQL SELECT JA INSERT
10
862
Vastaukset
- 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
Tässä on tuo SELECT osa, jolla talukon sisältö tulostetaan, siinä ei mitään hienostella, tylysti vain tieto ulos: https://i.postimg.cc/PxY3r1ZZ/Valinta-006.png
- 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
Mies, näen sinua hetken
ja olet mielessä ikuisuuden. Toisia näen ikuisuuden ja he eivät jää mieleen hetkeksikään. Muistan jokaisen kohtaamisen183784Riikan perintö: ennätysvelka, ennätystyöttömyys ja ennätysverotus
Tavallisen keskituloisen suomalaisen verotus on kireintä vuosikymmeniin, ja ensi vuonna palkansaajien käteen jää vieläki2223708Riikka Purra on ihana, jämpti
Hän yrittää saada Suomen taas kuntoon. Sanoo asiat suoraan, eikä piiloudu kapulakielen taakse. Riikan kaltaisia päättä962656SDP haluaa LISÄÄ veroja bensa-autoille!
Sdp:n vaihtoehtobudjetti esittää polttomoottoriautoille lisää veroja Sdp esittää tuoreessa vaihtoehtobudjetissaan verot202574"Purra löylytti oppositiota", sanoi naistoimittaja Pöllöraadissa
Kyllä, Purra tekee juuri sitä työtä mitä hänen tuossa asemassa pitää tehdä, hän antaa oppositiolle takaisin samalla mita292312Henkilökohtaisia paljastuksia Dubaista - Kohujulkkis Sofia Belorf on äitipuoli ja puoliso!
Tiesitkö, että Sofia on äitipuoli ja rakastava puoliso? Sofia Belorf saa oman sarjan, jossa seurataan hänen Bling Bling642246Antti Lindtman kiitti valtiovarainministeri Purraa
Ministeri Purra kertoi ottavasa vastuun EU:n alijäämämenettelyyn joutumisesta. Hän myös sanoi tietävänsä, että Lindtman182238Suomalaisten enemmistö on (ateisteja / fiksuja / sosialisteja)
Tai jokin noiden yhdistelmä, koska S-ryhmän markkinaosuus päivittäistavarakaupasta on yli 50 prosenttia.131946Sorsa: kuvaputki - Lipponen: kaasuputki - Marin: ryppyputki
Nuo kolme demaria ovat poikkeuksia Suomen poliittisessa historiassa. Ovat ainoita, jotka ovat kyenneet nostamaan puolue581778- 901611