Podstawy SQLAlchemy
17 Czerwiec 2010
W niniejszym wpisie postaram się wyjaśnić działanie SQLAlchemy oraz pokazać jego działanie na paru bardzo prostych przykładach.
Czym jest SQLAlchemy?
SQLAlchemy jest to zespół narzędzi do pracy z bazami danych i Pythonem. Składa się on z Narzędzi SQL i Mappera Obiektowo Relacyjnego. W poniższym wpisie będę starał wytłumaczyć zasady działania Mappera Obiektowo Relacyjnego.
Czym jest Mapper Obiektowo Relacyjny(ORM- Object Relational Mapper)?
ORM jest to narzędzie pozwalające na operowanie na relacyjnych bazach danych bez większej znajomości języka SQL. Zapytania SQL do bazy tworzone są automatycznie na podstawie metod czy funkcji których się używa. Jest to bardzo wygodne narzędzie do szybkiego tworzenia bazy danych oraz jej zarządzania. SQLAlchemy jest niezależny od bazy i pozwala operawać na między innymi:
- DB2
- Firebird
- Microsoft SQL Server
- MySQL
- Oracle
- PostgreSQL
- SQLite
- Sybase ASE
Jeżeli nie masz zainstalowanego SQLAlchemy polecam instalację przez:
easy_install sqlalchemy
lub
pip install sqlalchemy
Załóżmy na początęk, że chcę stworzyć tabele Książek i Autorów.
Stwórzmy plik database.py
from sqlalchemy import Integer, Column, String, ForeignKey, Date
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import create_engine
Base = declarative_base()
class Book(Base):
__tablename__ = 'book'
id = Column(Integer, primary_key=True)
title = Column(String(20))
data_publish = Column(Date)
def __init__(self, title, data_publish):
self.title = title
self.data_publish = data_publish
def __repr__(self):
return "Title: %s" % (self.title)
class Author(Base):
__tablename__ = 'author'
id = Column(Integer, primary_key=True)
first_name = Column(String(10))
last_name = Column(String(10))
def __init__(self, first, last):
self.first_name = first
self.last_name = last
def __repr__(self):
return "User: %s %s " % (self.first_name, self.last_name)
def make_engine():
engine = create_engine('sqlite:///bazka.sql')
return engine
Stwórzmy plik create.py
from database import Base, make_engine
def create_database():
Base.metadata.bind = make_engine()
Base.metadata.create_all()
create_database()
I wykonaj:
python create.py
Dzięki temu utworzysz podstawową strukturę Bazy Danych w pliku bazka.sql
Teraz trochę wytłumaczenia kodu:
from sqlalchemy import Integer, Column, String, ForeignKey, Date from sqlalchemy.ext.declarative import declarative_base from sqlalchemy import create_engine
Importujemy klasy Column oraz typów danych w bazie(Integer, String, Date, ForeignKey(obecnie jeszcze nie użyte).
Pewnie zastanawiacie się czym jest declarative_base otóż według dokumentacji jest to konstruktor klasy bazowej do definiowania reszty klas.
Base = declarative_base()
Definiowanie klasy bazowej
Tworzenie klasy Book(książek):
class Book(Base):
nazwa tabeli w bazie danych:
__tablename__ = ‘book’
I dalej deklaracje kolejnych kolumn
Pole id powinno mieć wpisane w Column poza typem, również primary_key=True aby było indeksem danej tabeli.
Utworzyłem sobie jedną pomocniczą funkcje make_engine która tworzy mi połączenie z bazą danych do jej utworzenia.
def __init__(self, first, last):
self.first_name = first
self.last_name = last
def __repr__(self) – funkcja ta służy do reprezentowania obiektów z bazy typu Book w pythonie.
W pliku create.py mamy
importowanie z pliku data.py Base oraz funkcji make_engine()
Funkcja create_database() binduje połączenie z bazą danych zadeklarowana w make_engine() i tworzy strukturę bazy danych. Domyślnie sprawdza czy taka struktura już istnieje, jeżeli tak to nie robi nic. Jeżeli jej nie ma to tworzy strukturę bazy danych.
Reguły Autoryzacji w DSpace
1 Czerwiec 2010
System autoryzacji DSpace bazuje na połączeniu(przypisywaniu) akcji do obiektów i list E-Osób które mogą je wykonywać. Połączenia(przypisywanie) nazywamy Zasobami Reguł, i listy E-Osób nazywamy Grupami. Istnieją dwie specjalne grupy: „Administratorzy„, którzy mogą robić wszystko na systemie, oraz „Anonimowi„, którzy są listą zawierającą wszystkich użytkowników. Przypisywanie reguł dla akcji na obiekcie dla anonimowego użytkownika oznacza uzyskanie przez wszystkich praw do wykonania danej akcji. (Dla przykładu, dla większości obiektów w systemie DSpace posiadają one regułę dla „anonimowych” CZYTAJ)- Kolekcja
- DODAJ/USUŃ – dodaj lub usuń pozycję ( DODAJ = prawo do wysyłania pozycji )
- DOMYŚLNE_CZYTAJ_POZYCJE – dziedziczone jako CZYTAJ przez wszystkie wysłane pozycje
- DOMYŚLNE_CZYTAJ_DANE – dziedziczone jako CZYTAJ dla danych z wszystkich wysłanych pozycji.
- ADMIN_KOLEKCJI – Administratorzy Kolekcji mogą edytować pozycję w kolekcji, wycofywać pozycję, mapować inne pozycje do tej kolekcji.
- Pozycja
- DODAJ/USUŃ – dodaj lub usuń
- CZYTAJ – może przeglądać pozycję (metadane pozycją są zawsze widoczne)
- ZAPISZ – może zmieniać pozycję
- Pakiet
- DODAJ/USUŃ – dodaj lub usuń dane z pakietu
- Dane
- CZYTAJ – przeglądaj dane
- ZAPISZ – modyfikuj dane
Wymagania DSpace
31 Maj 2010
Oprogramowanie DSpace jest w pełni oparte o komponenty Open Source. Pozwala to na uruchomienie DSpace na wielu przeróżnych platformach sprzętowych i systemowych. Samo oprogramowanie serwerowe DSpace zostało napisane w języku Java. Zamieszczam osobno wymagania co do oprogramowania dla *NIX i dla systemów z rodziny Windows, gdyż posiadają nieznaczne równice.
Minimalne wymaganie DSpace dla platformy *NIX(Linux-większość dystrybucji powinna posiadać oprogramowanie poniżej, HP-UX itd.) :
- Sun Java JDK 5
- Apache Maven 2.0.8 lub nowsza wersje
- Apache Ant 1.7 lub nowsza wersja
- Relacyjna Baza Danych:
- PostgreSQL co najmniej 7.3 lub 7.4 zalecana wersja to jednak 8.0 lub wyższa
- Oracle co najmniej wersja 9 - Serwer serwletów Javy:
- Apache Tomcat
- Jetty
- Caucho Resin
- I wszystkie równorzędne - Perl
Wymagania dla DSpace na platformę Windows
- Java SDK 1.5 lub nowsza
- Relacyjna Baza Danych:
-PostgreSQL 8.0 lub nowszy
-Oracle 9 lub nowszy - Apache Ant w wersji co najmniej 1.6.2 lub nowszej
- Apache Tomcat 5.0 lub nowszy
- Apache Maven 2.0.8 lub nowszy
Podczas instalacji na platformie Windows trzeba pamiętać o ustawieniu zmiennych środowiskowych takich jak: JAVA_HOME i ustawieniu PATH do katalogu instalacyjnego [ApacheAnt]\bin
E-nyklopedia otwarta!
30 Maj 2010
W ubiegłu piątek (tj. 28.05.2010) miało miejsce otwarcie E-ncyklopedii Historii Kościoła na Górnym Śląsku czyli prawie wszystko o Archidiecezji Katowickiej.
Jako członek redakcji miałem (i nadal mam ) w tym projekcie swój skromny udział jako informatyk. Encyklopedia obecnie dochodzi do 3000 tysięcy haseł zatem ma niezwykle dużą objętość haseł napisaną przez ścisłe grono redaktorskie.
Podczas otwarcia E-ncyklopedii odbyła się konferencja naukowa na której podejmowaliśmy temat praw autorskich, szans i zagrożeń Wikipedii, Wikifikacji wiedzy oraz sharizm web 2.0. Prelegentami byli:
- ks. prof. Jerzy Myszor
- ks. dr Damian Bednarski
- Ewa Kustra
- Adrian Blondzik
- Mgr Krzysztof Kanclerz
Zapraszam wszystkich serdecznie do objerzenia samego dzieła:
http://encyklo.pl/start

- Przechwytywania i opisu materiałów w postaci cyfrowej
- Dystrybucji treści cyfrowych które należą do organizacji, oraz ich przeszukiwania
- Oprogramowania DSpace pozwala na stworzenie własnej Biblioteki Cyfrowej(BC) bez większego nakładu finansowego za licencje.
- Społeczność(Community) -> Podspołeczność(Sub-community) – Np. Zakład Filozofii Chrześcijańskiej Uniwersytetu Śląskiego
- Kolekcja – Np. Dzieła Tomasza z Akwinu
- Pozycja – Suma Teologiczna
- Pakiet – np. Grupa Plików HTML i Pliki obrazków itd.
- Dane – np pojedyńczy plik HTML, pojedyńczy obrazek itd.
- Format Danych – np. HTML 4.01, JPEG, GIF, PDF itd.
- OpenURL
- OAI (Open Archive Initiative) protokół do zbierania metadanych. Pozwala ono między innymi na dołączenie się chociażby do Polskiej Federacji Bibliotek Cyfrowych.
- Wsparcie dla licencji Creative Commons
- Subskrypcje
- Wsparcie dla digitalizacji dokumentów HTML (całych stron Web)
- Wsparcie dla systemu CNRI Handle System [http://www.handle.net/]. Pozwala to na swobodną zmianę adresów/serwerów. Gdyż same zasoby dzięki handle.net zachowują prawidłowy link.
- Bardzo dokładne Statystyki
Obecnie rozpocząłem tłumaczenie całego pakietu oprogramowania DSpace. Chętnie wykonam też instalacje testowe na serwerach gdyż już posiadam w nich doświadczenie.
Zainteresowanych wsparciem, pomocą, testowaniem proszę o kontakt w zakładce o tejże nazwie.

