Pisanie skryptów MySQL z Python DB-API

24 Dec 2:10 pm


Original: http://www.kitebird.com/articles/pydbapi.html
Copyright: Paul DuBois

Pisanie skryptów MySQL z Python DB-API

Paul DuBois Katowice
Napisanie skryptu

  • Bardziej rozległe DB-API Script
  • Uwagi  Przenośność
  • Historia edycji
  • Katowice

    Python to jeden z bardziej popularnych języków programowania Otwartych Source,
    głównie ze względu na jego własnym natywnej ekspresji, jak również
    Różnorodność modułów wsparcia, które są dostępne w celu rozszerzenia jego możliwości.
    Jeden z tych modułów jest DB-API, która, jak sama nazwa wskazuje, zapewnia
    Interfejs programowania aplikacji baz danych. DB-API jest zaprojektowany
    stosunkowo niezależnie od szczegółów konkretnych się z danym
    silnik bazy danych, aby pomóc Ci w napisaniu bazy danych dostępu do skryptów
    są przenośne pomiędzy silnikami. Katowice

    Konstrukcja DB-API jest podobne do stosowanego przez Perl i Ruby moduły DBI
    PHP PEAR klasy DB i Java interfejs JDBC: Używa
    Dwupoziomowy architektura, w której górny poziom stanowi streszczenie
    interfejs, który jest podobny dla wszystkich obsługiwanych silników baz danych,
    i niższy poziom składający się z kierowcami dla poszczególnych silników
    uchwyt silnika zależne szczegóły. Oznacza to, oczywiście, że w celu
    użyć DB-API do pisania skryptów Pythona, musisz mieć sterownik
    dla danego systemu bazy danych. MySQL, DB-API zapewnia
    dostęp do bazy danych za pomocą sterownika MySQLdb. Ten dokument
    rozpoczyna się od instalacji dyskutujemy kierowcy (w przypadku, gdy nie ma
    MySQLdb), a następnie przenosi się do pokrycia jak pisać DB-API skryptów.

    Instalacja MySQLdb

    Katowice

    Do pisania skryptów, które używają MySQL DB-API, Python sam musi być
    zainstalowany. To prawie na pewno będzie prawdziwe, jeśli używasz
    Unix, ale jest mniej prawdopodobne w przypadku systemu Windows. Instalatory zarówno platformy
    można znaleźć na stronie Pythona (patrz “Zasoby”
    Rozdział na końcu tego dokumentu). Katowice

    Upewnij się, że wersja Pythona jest 2.3.4 lub nowszy, i że
    moduł MySQLdb jest zainstalowany. Możesz sprawdzić, jak z tych wymogów
    uruchamiając Python w trybie interaktywnym z wiersza poleceń polecenia
    (Coś jak% na systemie Unix lub C: \> dla Windows) Katowice

       % Python 
       Python 2.4.3 (# 1, Aug 29 2006, 14:45:33)
       [GCC 3.4.6 (Gentoo 3.4.6-r1, ssp-3.4.5-1.0, pie-8.7.9)] na linux2
       Wpisz "help", "copyright", "kredyty" lub "Licencja", aby uzyskać więcej informacji.
        >>> Import MySQLdb 

    Zakładając, że masz najnowszą wersję Pythona dość i że
    wystąpienia błędu podczas wydawania import MySQLdb
    oświadczenie, że jesteś gotowy, aby rozpocząć pisanie skryptów bazy danych dostępu
    i można przejść do następnej sekcji. Jednakże, jeśli masz
    w następstwie błędu, należy uzyskać i zainstalować MySQLdb pierwsze: Katowice

        >>> Import MySQLdb 
       Traceback (most recent call last):
         Plik "", line 1, in?
       ImportError: nr moduł o nazwie MySQLdb

    Aby uzyskać MySQLdb, odwiedź “Zasoby”, aby
    zobaczyć, gdzie można pobrać rozkład odpowiednią dla swojego systemu.
    Pliki wykonywalne mogą dostępne dla danej platformy, można też
    zainstalować ze źródeł. Jeśli korzystasz z binarnej dystrybucji, zainstaluj
    go za pomocą swojej platformy zwykłą procedurę instalacji pakietu.
    Aby zbudować i zainstalować ze źródeł, przejść do katalogu najwyższego poziomu
    z MySQLdb dystrybucji i wykonaj następujące polecenia.
    (W systemach Unix, jest prawdopodobne, że będziesz musiał uruchomić drugą komendę
    jako root , tak, że pliki sterowników mogą być skopiowane do
    Instalacja Python.) Łódź

       % Python setup.py budować 
       % Python setup.py install 

    Jeśli występują problemy, sprawdź README plik włączone
    z MySQLdb dystrybucji.

    Krótki DB-API Script

    Katowice

    Skrypty, że dostęp MySQL przez DB-API używając MySQLdb ogólnie
    wykonać następujące czynności: Katowice

    • Importowanie
      modułu MySQLdb
    • Otwiera połączenie do serwera MySQL
    • Składania oświadczeń i pobierać ich wyniki
    • Zamknij
      połączenia z serwerem

    Pozostała część tego rozdziału zawiera krótki DB-API skrypt, który ilustruje
    podstawowe elementy tych kroków. Późniejsze rozdziały omawiają specyficzne
    aspekty pisania scenariuszy bardziej szczegółowo. Łódź
    name=TOC_3> <a

    Pisanie skryptu

    Katowice

    Użyj edytora tekstu utwórz plik o nazwie server_version.py
    , który zawiera następujący skrypt. Skrypt ten wykorzystuje do MySQLdb
    interakcji z serwerem MySQL, choć w dość prymitywny
    moda – wszystko co robi to do serwera zapytanie o jego numerze wersji Trójmiasto

    # Server_version.py - pobierać i wyświetlać wersję serwera bazy danych

    import MySQLdb

    conn = MySQLdb.connect (host = “localhost”,
    = “tester” użytkownik,
    passwd = “testpass”
    db = “test”)
    kursor conn.cursor = ()
    cursor.execute (“SELECT VERSION ()”)
    row = cursor.fetchone ()
    print “wersję serwera:”, wiersz [0]
    cursor.close ()
    Conn.Close ()

    Import oświadczenie mówi, że Python skrypt potrzebuje
    użyć kodu w MySQLdb modułu. Oświadczenie to musi poprzedzać
    wszelkie próby nawiązania połączenia z serwerem MySQL. Następnie połączenie
    jest ustanowiony przez wywołanie connect () metoda
    Kierowca MySQLdb z odpowiednimi parametrami połączenia. Należą
    hostname gdzie serwer jest uruchomiony, nazwa użytkownika i hasło
    do konta MySQL, oraz nazwę bazy danych, którą
    użyć. connect () składnia argumentu lista różni się w zależności
    Kierowcy, na MySQLdb, argumenty mogą być podane w
    nazwa = wartość format,
    które ma tę zaletę, że można je określić w dowolnej kolejności.
    server_version.py nawiązuje połączenie z serwerem MySQL
    na lokalnym komputerze, by przejść testy bazy danych z
    Nazwę użytkownika i hasło tester i testpass : Łódź

       conn = MySQLdb.connect (host = "localhost",
                               = "tester" użytkownik,
                               passwd = "testpass"
                               db = "test")

    Jeśli connect () wezwanie się powiedzie, zwraca połączenie
    Obiekt, który służy jako podstawa do dalszych interakcji z MySQL.
    Jeśli połączenie się nie powiedzie, to podnosi wyjątek. ( Server_version.py
    nie obsługi wyjątku, więc błąd w tym momencie kończy się
    skrypt. Obsługa błędów znajduje się w dalszej części tego dokumentu.) Łódź

    Po obiekt połączenia zostały uzyskane, server_version.py
    wywołuje jej kursor () metodą tworzenia kursora obiektu
    do przetwarzania instrukcji. Skrypt używa tego kursor do wydawania
    SELECT VERSION () oświadczenie, które zwraca
    Ciąg zawierający informacje o wersji serwera: Katowice

       kursor conn.cursor = ()
       cursor.execute ("SELECT VERSION ()")
       row = cursor.fetchone ()
       print "wersję serwera:", wiersz [0]
       cursor.close ()

    Kursor obiektu execute () Metoda wysyła oświadczenie
    do serwera i fetchone () pobiera wiersz jako krotki.
    Do zestawienia przedstawionego tutaj krotka zawiera jedną wartość,
    jaką drukuje skryptu. (Jeśli nie wiersz jest dostępny, fetchone ()
    faktycznie zwróci wartość None , server_version.py
    beztrosko zakłada, że ​​to się nie stanie, założenie, że ty
    normalnie nie powinny. W późniejszych przykładów, będziemy sobie z tym poradzić
    przypadków.) przedmioty Cursor można wydać wiele oświadczeń,
    ale server_version.py nie ma już potrzeby kursorem
    po uzyskaniu numeru wersji, więc zamyka go. Katowice

    Wreszcie skrypt wywołuje obiekt Connection jest blisko ()
    Sposób, aby odłączyć się od serwera: Katowice

       Conn.Close ()

    Po tym, conn staje się nieważne i nie powinny być używane
    dostęp do serwera.

    Uruchamianie skryptu

    Katowice

    Aby wykonać server_version.py skrypt wywołać Pythona
    z linii poleceń, i powiedz mu nazwę skryptu. Państwo
    powinien zobaczyć coś takiego: wynik

       % Python server_version.py 
       Wersja serwera: 01.05.12-beta-log

    Oznacza to, że wersja serwera MySQL 5.1.12; -beta
    i -log przyrostki nam stabilność dystrybucji
    poziom i że rejestrowanie zapytanie jest włączony. (Możesz zobaczyć inne
    przyrostki, niż te pokazane tutaj. Na przykład, jeśli debugowania
    włączone, zobaczysz -debug przyrostek). Katowice

    Jest możliwe, aby ustawić skrypt tak, że można go uruchomić z nazwy
    bez odwoływania Python jawnie. W systemach Unix, dodaj początkowy
    #! linia do skryptu, który określa pełną ścieżkę
    interpretera Pythona. Ten informuje system, co program
    powinien wykonać skrypt. Na przykład, jeśli mieszka w Pythona / usr / bin / python
    na komputerze, należy dodać następujące w pierwszej linii skryptu: Katowice

       #! / Usr / bin / python

    Następnie użyj chmod , aby skrypt wykonywalnym, a będziesz
    być w stanie uruchomić go bezpośrednio: Katowice

       % Chmod + x server_version.py 
       %. / Server_version.py 

    (Wiodący “. / ” opowiada swoją interpreter poleceń
    wyraźnie, że skrypt znajduje się w bieżącym katalogu.
    Wiele kont Unix są ustawione, aby nie przeszukiwać katalog bieżący
    patrząc na polecenia.) Łódź

    Pod Windows #! linia jest niepotrzebna (chociaż jest to
    nieszkodliwa, więc nie trzeba go usunąć, jeśli piszesz skrypt na
    systemu Unix, a następnie przenieść go na pole okna). Zamiast tego,
    może powołać stowarzyszenie nazwa_pliku aby . py skrypty będą
    być związane z Pythonem. Zamiast używać chmod , aby
    wykonywalny skrypt, otwórz aplet Opcje folderów w kontrolce
    Panel i wybierz swoją kartę Typy plików. Typy plików umożliwia
    założyć stowarzyszenie dla plików, które kończą się . py , aby powiedzieć
    Okna do ich wykonania w Pythonie. Następnie można wywołać skrypt
    wg nazwy: Łódź

       C: \>  server_version.py 

    Jeśli zainstalujesz ActiveState Python w systemie Windows, ActiveState
    Instalator ustawia stowarzyszenie automatycznie jako część
    proces instalacji. Katowice
    name=TOC_5> <a

    Bardziej rozległe DB-API Script

    Katowice

    server_version.py ma kilka niedociągnięć. Na przykład,
    nie złapać wyjątki lub wskazać, co poszło źle, jeśli
    błędu, i nie pozwala na możliwość, że
    Oświadczenie to działa może nie zwróciło żadnych wyników. Ta sekcja pokazuje
    jak rozwiązać te problemy za pomocą skomplikowanych skryptów, animal.py ,
    który wykorzystuje tabelę zawierającą nazwy i kategorii zwierząt Katowice

       UTWÓRZ zwierzę TABLE
       (
         name CHAR (40),
         kategoria CHAR (40)
       )

    Jeśli czytać dokument PEAR DB dostępnych w Kitebird
    witryna (patrz “Zasoby”), można uznać tę tabelę
    a niektóre z oświadczeń wydanych przez animal.py , byli
    używane w tym dokumencie, też. Katowice

    Animal.py Skrypt zaczyna tak (w tym #!
    line, należy zamierzają uruchomić skrypt w systemie Unix) Katowice

       #! / Usr / bin / python
       # Animal.py - tworzenie tabeli na zwierzętach i
    # Pobieranie informacji od niego

    import sys
    import MySQLdb

    Jak z server_version.py , import skrypt MySQLdb,
    ale również importuje sys do stosowania w module obsługi błędów.
    ( Animal.py używa sys.exit () , aby powrócić do wskazania 1
    nieprawidłowe wypowiedzenie, jeśli wystąpi błąd.) Katowice
    name=TOC_6> <a

    Obsługa błędów

    Katowice

    Po zaimportowaniu wymaganych modułów, animal.py ustanawia
    połączenie z serwerem za pomocą connect () połączenia.
    Aby zezwolić na możliwość błędu połączenia (na przykład,
    tak, że można wyświetlić przyczynę awarii), konieczne
    złapać wyjątki. Do obsługi wyjątków w Pythonie, połóż
    kod w spróbować oświadczenia i zawierać wyjątkiem
    klauzula, która zawiera kod obsługi błędów. Zasilania powoduje
    sekwencja wygląda tak: Katowice

       spróbuj:
         conn = MySQLdb.connect (host = "localhost",
                                 = "tester" użytkownik,
                                 passwd = "testpass"
                                 db = "test")
       wyjątkiem MySQLdb.Error, e:
         print "Błąd% d:% s"% (e.args [0], e.args [1])
         sys.exit (1)

    Wyjątkiem Nazwy klauzula klasę Exception ( MySQLdb.Error
    w tym przypadku) w celu uzyskania informacji specyficznych danych błędów
    , które mogą zapewnić MySQLdb oraz zmiennej ( e ) w
    do przechowywania informacji. Jeśli wyjątek, MySQLdb
    sprawia, że ​​te informacje w e.args , dwuelementowy
    krotka zawierająca numeryczny kod błędu i ciąg opisujący
    error. Wyjątkiem klauzuli pokazano na przykład odbitek
    obie wartości i wyjścia. Katowice

    Wszelkie oświadczenia związane z bazą danych może być umieszczony w podobnym spróbuj / z wyjątkiem
    struktury do pułapki i raport błędów; dla zwięzłości, następujący
    dyskusja nie pokazuje kod obsługi wyjątków. (Pełne
    Tekst animal.py jest wymieniony w dodatku.) Łódź

    Metody wydawanie oświadczeń

    Katowice

    Następna część animal.py tworzy obiekt i kursora
    używa go do wydania oświadczenia, skonfigurować i zapełnić zwierzę
    tabela: Katowice

       kursor conn.cursor = ()
       cursor.execute ("DROP TABLE IF EXISTS zwierzę")
       cursor.execute ("" "
           UTWÓRZ zwierzę TABLE
           (
             name CHAR (40),
             kategoria CHAR (40)
           )
         "" ")
       cursor.execute ("" "
           INSERT INTO zwierzęcia (nazwa, kategoria)
           WARTOŚCI
             ("Wąż", "gad"),
             ("Żaba", "płaz"),
             ("Tuna", "ryba"),
             ("Racoon", "ssak")
         "" ")
       print "Liczba rzędów brzmieniu:% d" cursor.rowcount%

    Zauważ, że ten kod nie zawiera sprawdzanie błędów. (Pamiętaj, że
    zostanie umieszczona w spróbować instrukcja; błędy będą powodować
    wyjątki, które zostały złowione i poddane obróbce w odpowiednim wyjątkiem
    klauzula, która umożliwia przepływ główny kodeksu czytać płynnie.)
    Oświadczenia należy wykonać następujące czynności: Łódź

    • Rzuć zwierzę tabela, jeśli już istnieje, na początek
      z czystym kontem.
    • Utwórz zwierzę tabeli. Katowice
    • Wstawić niektóre dane do tabeli i podać liczbę wierszy
      dodaje. Katowice

    Każde oświadczenie jest wydawane przez wywołanie kursor obiektu execute ()
    Metoda. Pierwsze dwie instrukcje nie wytwarzają wynik, lecz trzeci
    wytwarza liczbę określającą liczbę wierszy umieszczonych. Ilość
    jest dostępny w kursora ROWCOUNT atrybutu. (Niektóre
    interfejsy bazodanowe świadczenia tej liczby jako wartości zwracanej
    Oświadczenie-wykonanie połączenia, ale nie jest to prawdą dla DB-API.) Łódź

    Zwierzę stół jest ustawiony w tym miejscu, więc możemy wydać
    SELECT do wyciągnięcia informacji z niego. Jak
    z wypowiedziami poprzednich SELECT stwierdzenia są
    wystawioną przy execute () . Jednak w przeciwieństwie do stwierdzeń takich
    jak DROP lub INSERT , SELECT Oświadczenia
    wygenerować zestaw wyników, które należy pobrać. Oznacza to, że execute ()
    tylko kwestie prywatności, to nie zwraca zestaw wyników.
    Możesz użyć fetchone () , aby uzyskać rzędy jeden na raz,
    lub fetchAll () , aby je wszystkie na raz. animal.py
    używa obu podejść. Oto jak korzystać fetchone ()
    row-at-a-czas wyszukiwania: Katowice

       cursor.execute ("SELECT nazwa, kategoria od zwierzęcia")
       a (1):
         row = cursor.fetchone ()
         jeśli wiersz == None:
           złamać
         print "% s,% s"% (row [0], row [1])
       print "Liczba zwracanych wierszy:% d"% cursor.rowcount

    fetchone () zwraca następny wiersz wyniku ustawiony jako
    krotki, lub wartość None , jeśli nie ma więcej wierszy są dostępne.
    Kontrole pętla dla tego i wyjścia, gdy wynik został zestaw
    wyczerpane. Na każdy wiersz zwracany krotka zawiera dwie wartości
    (To ile kolumn SELECT Oświadczenie wyznaczona),
    które animal.py drukuje. Print Oświadczenie pokazano
    powyżej dostęp poszczególne elementy krotki. Jednakże, ze względu
    są one stosowane w kolejności występowania w krotki, print
    Oświadczenie może równie dobrze być napisane tak: Katowice

       print "% s,% s" wiersz%

    Po wyświetleniu wyników oświadczenie, skrypt drukuje również
    liczbę zwracanych wierszy (dostępny jako wartości ROWCOUNT
    atrybut). Katowice

    fetchAll () zwraca cały zestaw wyników na raz
    jak krotki krotek lub jako pusty krotki jeśli zestaw wyników jest
    pusty. Dostęp do poszczególnych krotek wierszy, iterację
    wiersz ustawić, że fetchAll () zwraca: Katowice

       cursor.execute ("SELECT nazwa, kategoria od zwierzęcia")
       rows = cursor.fetchall ()
       dla wiersza w wierszach:
         print "% s,% s"% (row [0], row [1])
       print "Liczba zwracanych wierszy:% d"% cursor.rowcount

    Ten kod wyświetla liczbę wierszy, korzystając ROWCOUNT ,
    tak jak na fetchone () pętla. Innym sposobem określania
    wiersz liczyć podczas korzystania fetchAll () jest poprzez
    długość wartości, że wraca Trójmiasto

       print "% d wierszy zwróconych"% len (wiersze)

    FETCH pętle przedstawione dotąd wiersze pobrać jako krotek. To także
    można pobrać wiersze jak słowniki, które umożliwia dostęp do
    wartości kolumny według nazwy. Poniższy kod pokazuje, jak to zrobić.
    Należy pamiętać, że dostęp do słownika wymaga innego rodzaju kursora,
    więc przykład zamyka kursor i uzyskuje nowy, który używa
    inna klasa cursor: Katowice

       cursor.close ()
       conn.cursor = kursor (MySQLdb.cursors.DictCursor)
       cursor.execute ("SELECT nazwa, kategoria od zwierzęcia")
       result_set = cursor.fetchall ()
       dla wiersza w result_set:
         print "% s,% s"% (row ["name"], row ["category"])
       print "Liczba zwracanych wierszy:% d"% cursor.rowcount

    NULL wartości w zestawie wyników są zwracane jako None
    do programu. Katowice

    MySQLdb wspiera zdolność zastępczy, który umożliwia
    wartości danych wiążą się specjalne znaczniki w ciągu oświadczenie.
    To stanowi alternatywę do osadzania wartości bezpośrednio
    do rachunku. Mechanizm zastępczy obsługuje dodawanie cytatów
    wokół wartości danych, a ucieka żadnych znaków specjalnych
    występujących w wartościach. Poniższe przykłady obrazują UPDATE
    oświadczenie, że zmiany snake do żółwia , pierwszy
    przy wartości literałów, a następnie używając symboli zastępczych. Literal-value
    deklaracja wygląda tak: Katowice

       cursor.execute ("" "
             Zwierząt UPDATE SET name = 'żółw'
             WHERE name = 'snake'
           "" ")
       print "Liczba rzędów zaktualizowanych:% d" cursor.rowcount%

    Alternatywnie, można wydać taką samą deklarację, używając% s
    markery zastępcze i wiążące odpowiednie wartości do nich Trójmiasto

       cursor.execute ("" "
             Zwierząt UPDATE SET name =% s
             WHERE name =% s
           "" ", (" Wąż "," żółw "))
       print "Liczba rzędów zaktualizowanych:% d" cursor.rowcount%

    Należy zwrócić uwagę na następujące kwestie dotyczące postaci poprzedniego execute ()
    zadzwoń: Katowice

    • Wartość% s marker zastępczy powinien występować tylko raz dla każdego
      Wartość, która ma zostać umieszczona w ciąg instrukcji. Katowice
    • Brak cytaty powinny być umieszczone wokół % s markery; MySQLdb
      Materiały cytaty dla Ciebie jak to konieczne. Katowice
    • Po argument ciąg oświadczenie do Execute () ,
      zapewniają krotki zawierającej wartości, które mają być powiązane zastępczych,
      w kolejności powinny się pojawić w ciągu. Jeśli masz
      tylko jedną wartość x , określić go jako (x,) , aby
      wskazują jednoelementowa krotka.
    • Powiąż Brak Python wartość do symbolu zastępczego, aby wstawić
      SQL NULL wartość w oświadczeniu. Katowice

    Po wydaniu oświadczenia, animal.py zamyka kursor,
    dopuszcza zmiany i rozłącza się z serwerem: Katowice

       cursor.close ()
       conn.commit ()
       Conn.Close ()

    Zasilania obiektu commit () Metoda popełnia wszelkie zaległe
    Zmiany w bieżącej transakcji, aby je na stałe w
    bazy danych. W DB-API, połączenia zacząć niepełnosprawnych tryb automatycznego zatwierdzania,
    więc musisz zadzwonić commit () przed odłączeniem lub zmiany
    mogą zostać utracone. Katowice

    Jeśli zwierzę tabela tabela MyISAM commit ()
    nie ma wpływu: MyISAM jest nietransakcyjny silnik składowania, więc
    zmiany w tabelach MyISAM w życie natychmiast, niezależnie od
    tryb automatycznego zatwierdzania. Jednakże, jeśli zwierzę używa transakcyjnych
    silnik składowania InnoDB, takich jak niewydolność powołać commit ()
    wyniki w niejawny wycofywania transakcji po odłączeniu.
    Na przykład, jeśli dodasz ENGINE = InnoDB do końca
    UTWÓRZ TABLE oświadczenia i usunąć commit ()
    inwokacja pod koniec skryptu, przekonasz się, że zwierzę
    jest pusty po uruchomieniu skryptu. Katowice

    Dla skryptów że tylko pobierać dane, żadne zmiany nie muszą być popełnione
    i commit () jest zbędne.

    Uwagi Przenośność

    Katowice

    Jeśli chcesz przenieść się MySQLdb opartego DB-API skrypt do użycia z
    innej bazy danych, źródła braku przenośności wystąpić gdziekolwiek
    że nazwa sterownika mogą być stosowane: Katowice

    • Import oświadczenie, że importuje moduł sterownika.
      Należy to zmienić, aby zaimportować inny sterownik. Katowice
    • Connect () Połączenie, który łączy się z serwerem bazy danych.
      Connect () metoda jest dostępne poprzez nazwę
      moduły sterownika, więc sterownik Nazwa wymaga zmiany. W
      Ponadto connect () składnia argumentu może wahać
      kierowców. Katowice
    • Obsługa wyjątków. Klasa wyjątek wymieniony w wyjątkiem
      Klauzule odwołuje poprzez nazwisko kierowcy. Katowice

    Inny rodzaj braku przenoszenia, który nie wymaga sterownika
    Nazwa dotyczy wykorzystania symboli zastępczych. DB-API specyfikacja
    pozwala na kilku składni zastępczy, a niektórzy kierowcy używać
    składnia różni się od obsługiwanego przez MySQLdb. Katowice
    name=TOC_9> <a

    Zasoby

    Katowice

    Skrypty, które są wykorzystywane do przykładów w niniejszym dokumencie mogą być
    pobrać z następującej lokalizacji: Łódź

    http://www.kitebird.com/articles/
     

    Możesz znaleźć następujące dodatkowe środki pomocne przy
    Python DB-API i MySQLdb kierowca Katowice

    • Andy śmieciarz, autor modułu MySQLdb, posiada witrynę na Trójmiasto
      http://dustman.net/andy/python/
      

      Ta strona jest najlepszym miejscem do zapoznania się z dokumentacją MySQLdb
      i często zadawane pytania online. Posiada również linki do Debiana i Windows dwójkowym
      dystrybucje. Aby otrzymać kod źródłowy lub Linux prędkość obrotową, odwiedź MySQLdb
      SourceForge repozytorium pod adresem: Katowice

      http://sourceforge.net/projects/mysql-python
       
    • MySQL Cookbook zawiera Python DB-API wśród bazy
      interfejsy programistyczne, że obejmuje: Katowice

         http://www.kitebird.com/mysql-cookbook
        http://www.oreilly.com/catalog/mysqlckbk/
       
    • Strona internetowa Python ma instalatorów dla procesora języka Python,
      powinien być zainstalowany w systemie, który nie ma jeszcze go
      zainstalowane: Katowice

         http://www.python.org/
      
    • Baza danych SIG (Special Interest Group), obszar na Python Web
      strona zawiera dodatkowe informacje, DB-API Trójmiasto

         http://www.python.org/sigs/db-sig/
      
    • Zwierzę tabela używana przez animal.py skrypt
      Jest również stosowany w dokumencie PEAR DB w miejscu Kitebird Trójmiasto

          http://www.kitebird.com/articles/
       

      Można znaleźć to pouczające, aby porównać z tym, że dokument
      jeden, aby zobaczyć jak DB-API i PEAR DB są podobne lub różne w
      ich podejście do dostępu do bazy danych. Łódź

     

    Dodatek

    Katowice

    Pełny kod źródłowy animal.py skrypt jest pokazany
    tutaj: Katowice

       #! / Usr / bin / python
       # Animal.py - tworzenie tabeli na zwierzętach i
    # Pobieranie informacji od niego

    import sys
    import MySQLdb

    # Połączyć się z serwerem MySQL

    spróbuj:
    conn = MySQLdb.connect (host = “localhost”,
    = “tester” użytkownik,
    passwd = “testpass”
    db = “test”)
    wyjątkiem MySQLdb.Error, e:
    print “Błąd% d:% s”% (e.args [0], e.args [1])
    sys.exit (1)

    # Utworzyć tabelę i wypełnić go na zwierzętach

    spróbuj:
    kursor conn.cursor = ()
    cursor.execute (“DROP TABLE IF EXISTS zwierzę”)
    cursor.execute (“” ”
    UTWÓRZ zwierzę TABLE
    (
    name CHAR (40),
    kategoria CHAR (40)
    )
    “” “)
    cursor.execute (“” ”
    INSERT INTO zwierzęcia (nazwa, kategoria)
    WARTOŚCI
    (“Wąż”, “gad”),
    (“Żaba”, “płaz”),
    (“Tuna”, “ryba”),
    (“Racoon”, “ssak”)
    “” “)
    print “Liczba rzędów brzmieniu:% d” cursor.rowcount%

    # Wykonaj pobierał pętlę używając fetchone ()

    cursor.execute (“SELECT nazwa, kategoria od zwierzęcia”)
    a (1):
    row = cursor.fetchone ()
    jeśli wiersz == None:
    złamać
    print “% s,% s”% (row [0], row [1])
    print “Liczba zwracanych wierszy:% d”% cursor.rowcount

    # Wykonaj pobierał pętlę używając fetchAll ()

    cursor.execute (“SELECT nazwa, kategoria od zwierzęcia”)
    rows = cursor.fetchall ()
    dla wiersza w wierszach:
    print “% s,% s”% (row [0], row [1])
    print “Liczba zwracanych wierszy:% d”% cursor.rowcount

    # Wydać oświadczenie, że zmienia nazwę, w tym wartości danych
    # Dosłownie w ciąg instrukcji, a następnie zmienić jego nazwę z powrotem
    # Za pomocą symboli zastępczych

    cursor.execute (“” ”
    Zwierząt UPDATE SET name = ‘żółw’
    WHERE name = ‘snake’
    “” “)
    print “Liczba rzędów zaktualizowanych:% d” cursor.rowcount%

    cursor.execute (“” ”
    Zwierząt UPDATE SET name =% s
    WHERE name =% s
    “” “, (” Wąż “,” żółw “))
    print “Liczba rzędów zaktualizowanych:% d” cursor.rowcount%

    # Tworzenie kursora słownika tak, że wartości kolumn
    # Może być dostępne dla nazwy, a nie położenia

    cursor.close ()
    conn.cursor = kursor (MySQLdb.cursors.DictCursor)
    cursor.execute (“SELECT nazwa, kategoria od zwierzęcia”)
    result_set = cursor.fetchall ()
    dla wiersza w result_set:
    print “% s,% s”% (row [“name”], row [“category”])
    print “Liczba zwracanych wierszy:% d”% cursor.rowcount

    cursor.close ()

    wyjątkiem MySQLdb.Error, e:
    print “Błąd% d:% s”% (e.args [0], e.args [1])
    sys.exit (1)

    conn.commit ()
    Conn.Close ()

    Potwierdzenie

    Katowice

    Oryginalna wersja tego dokumentu została napisana dla NuSphere
    Corporation. Obecna wersja jest aktualizowana rewizja
    oryginału. Katowice
    name=TOC_12> <a

    Historia zmian

    Katowice

    • 1,00 -. Oryginalna wersja Katowice
    • 1,01, 2003-01-24. – Drobne zmiany Katowice
    • 1,02, 2006-09-17 – Bring aktualizowana dla MySQLdb 1.2.1. Dodaj informację
      o tryb automatycznego zatwierdzania oraz commit () metoda. Łódź

    Comments are closed