Python og MySQL
etter bidrag fra kollega Edgar Bostrøm
[
MySQL
][
Python bibliotek for MySQL
][
Kjøring av SQL-statements i Python - prinsipp:
][
Eksempel:
]
MySQL
- Last ned MySQL fra www.mysql.com og installer denne der du ønsker.
- Last evt. også ned "MySQL GUI Tools Bundle" fra samme sted. Her finner du verktøy for å administrere og inspisere databaser.
- Databasen må startes
Python bibliotek for MySQL
- Last ned MySQLdb via www.mysql.com, eller fra sourceforge.net/projects/mysql-python. Sjekk versjoner og kompatibilitet
Kjøring av SQL-statements i Python - prinsipp:
Når vi programmerer bruker vi MySQLdb-objekter for å koble oss opp, hente data osv. Dette blir dermed integrert i Python.
Opplegget blir i korthet:
- Koble opp databasen (lag et databaseoppkoblingsobjekt som peker til den maskinen og databasen du ønsker å jobbe med)
- Deklarer et resultatobjekt som kan eksekvere spørringer og hvor resultatet av spørringen mot databasen kan legges
- Bruk databasen
- Legg spørringen i en tekststreng
- Kjør spørringen
- Bruk resultatet
- Koble ned databasen
Eksempel:
Edgar Bostrøm
Python 2.0 (#8, Oct 16 2000, 17:27:58) [MSC 32 bit (Intel)] on win32 Type "copyright", "credits" or "license" for more information. IDLE 0.6 -- press F1 for help >>> def MySQLdemo(): # importer bibliotek, koble opp databasen # og sett opp en markør (resultatobjekt) # host, bruker, passord, database # som host kan du skrive ip, db er databasenavnet i MySQL import MySQLdb #forutsetter først at basen ligger lokalt, uten passord mindatabase=MySQLdb.connect(host='localhost',user='',passwd='',db='test') mintabell=mindatabase.cursor() # Legger inn en ny kunde. Gir ingen melding tilbake hvis alt er ok sql_setning="insert into kunde values (46,'Hansen & Co')" mintabell.execute(sql_setning) #definer og eksekver en sporring. # NB: Hele SQL (også tabelloppretting) kan brukes. sql_setning = 'select * from kunde' mintabell.execute(sql_setning) # Lister ut de aktuelle, alt. 1, med feltnavn for kundenr,kundenavn in mintabell.fetchall(): print 'Kunde --> ',kundenr,kundenavn print "ferdig1" # Lister ut de aktuelle, alt. 2, med feltnr for radene in mintabell.fetchall(): print 'Kunde --> ',radene[0],radene[1] print "ferdig2" mindatabase.close() # eksempel som viser oppkobling mot ekstern database: # mindatabase =MySQLdb.connect # (host='pc16-81.hiof.no',user='iad10002',passwd='javaxerxgoy', db='skatt')
Resultatet av de to utlistings avsnittene ovenfor:
>>> MySQLdemo() Kunde --> 1 Ole Kunde --> 2 Hans Kunde --> 46 Hansen & Co ferdig1 Kunde --> 1 Ole Kunde --> 2 Hans Kunde --> 46 Hansen & Co ferdig2 >>>