Uvod u jezik PYTHON

(priručnik za  predmet "Skript jezici")


© Matematički fakultet

Miljana Mladenović, Duško Vitas

O Python-u
Instalacija
Sintaksa jezika Python
Osnovne osobine
Službene reči
Operatori i njihovi prioriteti
Osnovne algoritamske strukture
Blok naredbi
if struktura
while struktura
Iskazi: break, continue, pass
Tipovi podataka u Python-u
Osnovni i ugradjeni tipovi
Brojevi
Konverzija formata
Neke matematičke funkcije
Neke random funkcije
Niske
Neke funkcije nad niskama
Formatiranje niski
Liste
Torke
Osnovni izrazi sa torkama
Rečnici
Skupovi
Operacije nad skupovima
Datoteke
Funkcije modula os za rad sa datotekama
Funkcije modula os za rad sa folderima
Izuzeci
Funkcije
Moduli
Paketi
Klase
Regularni izrazi
Baze podataka
Primeri u Netbeans-u

Baze podataka

     

Python-ov standrard za pristup bazama podataka je Python DB-API. Predviđa nekoliko načina pristupa, odnosno vrsta interfejsa:

  • generički interfejsi
  • interfejsi za pristup relacionim bazama podataka
  • interfejsi pristupa nerelacinim (XML) bazama
  • interfejsi prirodnih, podrazumevanih Python baza

     

U generičke interfejse spadaju ODBC (Open Database Connectivity) i ADO pristup.

ODBC  obezbeđuje pristup: Windows, Mac OS X, iODBC, unixODBC i DataDirect ODBC drajver menadžerima. Pruža podršku za:

MS SQL Server Native Client, MS SQL Server ODBC Driver, FreeTDS ODBC Driver, Oracle Instant Client ODBC Driver, IBM DB2 ODBC Driver, Sybase ASE ODBC Driver, Netezza ODBC Driver, Teradata ODBC Driver, PostgreSQL ODBC Driver, MySQL ODBC Driver, MaxDB ODBC Driver, ODBC driver sets of EasySoft, DataDirect, OpenLink, Actual Technologies.

ADO obezbeđuje pristup:

Windows Microsoft ADO bazama podataka.

     

Interfejsi za podršku relacionim bazama podataka implementirani su za:

IBM DB2, Firebird, Interbase, Informix, Ingres, MySQL, Oracle, PostgreSQL, SAP DB ("MaxDB"), Microsoft SQL Server, Sybase

     

Nerelacionim, odnosno XML bazama podataka:

4Suite server, Oracle/Sleepycat DB XML, BerkeleyDB

     

Prirodne (native) Python baze podataka su:

buzhug, SnakeSQL

     

Za rad sa bazom podataka mora se instalirati odgovarajući DB API modul koji Python programu omogućava:

  • import modula
  • uspostavljanje konekcije iz aplikacije prema bazi
  • otvaranje, zatvaranje konekcije, programsku modifikaciju prava pristupa bazi
  • kreiranje i izvršavanje SQL upita i uskladištenih procedura.

     

Specifikacija DB API interfejsa može se naći na adresama:

http://www.python.org/dev/peps/pep-0249/  i http://wiki.python.org/moin/DatabaseProgramming/

Za Microsoft SQL Server modul za rad sa Python-om može se naći na adresi:

http://www.egenix.com/products/Python/mxODBC/

Instalacija podrazumeva:

  • instalaciju egenix-mx-base-3.1.3.win32-py2.6.msi
  • kopiranje licencnih fajlova mxodbc_license.py i mxodbc_license.txt na folder Python-a
  • instalaciju samog ODBC drajvera egenix-mxodbc-3.1.0.win32-py2.6.msi

     

U Administrative Tools -> Data Sources (ODBC) kreirati ODBC User Data Source odabirom  SQL Native Client-a. Pri kreiranju definisati bazu kojoj se pristupa i prava pristupa (korisnika i lozinku). Na kraju testirati kreiranu ODBC konekciju i ako je OK, preći na izradu Python aplikacije.

     

Primer aplikacije razvijene u Netbeans razvojnom okruženju, sa Python-om kao jezikom za implementaciju i ODBC drajverom ka MS SQL Server 2005 relacionoj bazi podataka – pristupa se bazi oglasi  i njenoj tabeli Oglasivaci:

     

__author__="minad"

__date__ ="$Nov 28, 2010 12:44:59 PM$"

     

print "Baze podataka"

print "============================="

import mx.ODBC.Windows

print dir(mx.ODBC.Windows)

db = mx.ODBC.Windows.DriverConnect('DSN=odbcMSSql;UID=JavaUser;PWD=resuresu!')

c = db.cursor()

c.execute('select * from oglasivaci')

c.fetchone()

mx.ODBC.print_resultset(c)

c.close()

db.close()

     

Rezultat:

Baze podataka

=============================

['BIGINT', 'BINARY', 'BIND_USING_PYTHONTYPE', 'BIND_USING_SQLTYPE', 'BIT', 'Binary', 'CHAR', 'Connect', 'ConnectionType', 'CursorType', 'DATE', 'DATETIME', 'DATETIME_DATETIMEFORMAT', 'DECIMAL', 'DECIMAL_DECIMALFORMAT', 'DOUBLE', 'DataError', 'DataSources', 'DatabaseError', 'DatabaseWarning', 'Date', 'DateFromTicks', 'DriverConnect', 'EIGHTBIT_STRINGFORMAT', 'ERROR_WARNINGFORMAT', 'Error', 'FLOAT', 'FLOAT_DECIMALFORMAT', 'HAVE_UNICODE_SUPPORT', 'IGNORE_WARNINGFORMAT', 'INTEGER', 'IntegrityError', 'InterfaceError', 'InternalError', 'LONGVARBINARY', 'LONGVARCHAR', 'LicenseError', 'MIXED_STRINGFORMAT', 'NATIVE_UNICODE_STRINGFORMAT', 'NUMBER', 'NUMERIC', 'NotSupportedError', 'OperationalError', 'PYDATETIME_DATETIMEFORMAT', 'ProgrammingError', 'RAW', 'REAL', 'ROWID', 'SMALLINT', 'SQL', 'STRING', 'STRING_DATETIMEFORMAT', 'TIME', 'TIMESTAMP', 'TIMEVALUE_DATETIMEFORMAT', 'TINYINT', 'TUPLE_DATETIMEFORMAT', 'TYPE_DATE', 'TYPE_TIME', 'TYPE_TIMESTAMP', 'Time', 'TimeFromTicks', 'Timestamp', 'TimestampFromTicks', 'UNICODE', 'UNICODE_LONGVARCHAR', 'UNICODE_STRINGFORMAT', 'UNICODE_VARCHAR', 'VARBINARY', 'VARCHAR', 'WARN_WARNINGFORMAT', 'WCHAR', 'WLONGVARCHAR', 'WVARCHAR', 'Warning', '__builtins__', '__doc__', '__file__', '__name__', '__package__', '__path__', '__version__', 'apilevel', 'connect', 'dbtypes', 'error', 'errorclass', 'getenvattr', 'license', 'mxODBC', 'mxODBCType', 'mxODBCursorType', 'paramstyle', 'setenvattr', 'sqltype', 'statistics', 'threadlevel', 'threadsafety']

     

Id  | Ime    | Prezime          | email            | telefon      | adresa             

----------------------------------------------------------------------------------------

'2' | 'Mika' | 'Mikić'       | 'mika@ptt.rs'    | '017/23-567' | 'Vojvode Putnika 22'

'3' | 'Laza' | 'Lazić'       | 'laza@gmail.com' | '23-567'     | 'Zelengorska 5'    

'5' | 'Žika' | 'Žikić'       | 'pera@ptt.rs'    | '32-223'     | 'Prvomajska'        

     

 

Beograd, novembar 2010.