Seite 1 von 3

Suche Buch über Python und SQL

Verfasst: Sonntag 23. November 2008, 18:54
von cajus
Hi community!


Google books hat mich nicht weitergebracht,deshalb frage ich euch:
Ich suche ein Buch über die Programmiersprache Python für den Webeinsatz,das eine möglichst aktuelle Version behandelt (2.5 oder 2.6).

Die Themen xml in python,multithreading,Objektorientierung und eine Datenbank (am besten MySQL(aufgrund der Verbreitung)) sollten auch behandelt werden.

Es soll sich an python Einsteiger richten.


mfG

Verfasst: Sonntag 23. November 2008, 19:00
von jonas
HI!
Willkommen im Forum!

Bin zwar auch noch nicht so erfahren, jedoch habe ich so gehört von verschiedenen "Bücherdiskussionen" hier im Forum, dass die meisten
Python Bücher nicht so das Wahre sind. Lieber ein paar anständige
(deutsche?) Dokumentionen / Tutorials im Internet durcharbeiten.
Hoffe dich nicht verschreckt zu haben,

MfG Jonas

Verfasst: Sonntag 23. November 2008, 19:07
von DasIch
Es gibt nich die Lösung, es gibt zig Lösungen.

Jetzt könnte dir jeder seine Lieblingslösung nennen und ein paar Dokus dazu und vielleicht schaffts der Thread auch noch zum Flamewar oder du sagst etwas detailierter was du machen willst, was deine Anforderungen sind und du bekommst brauchbarere Antworten.

Verfasst: Sonntag 23. November 2008, 19:14
von derdon
Wenn du nichts gegen Englisch hast, kann ich dir "Core Python Programming" empfehlen. Die von dir genannten Themen werden alle behandelt. Was ich besonders gut finde, sind die Vergleiche. Es wird z.B. ein Dialog mit 4 verschiedenen Toolkits verglichen. An Datenbanken wird man auch reichlich bedient:
  • MySQL, SQLite, PostgreSQL
  • eine Datenbankanwendung, die einmal SQL-Alchemy und ein anderes Mal SQLObject benutzt
Beim Thema Multithreading wird erklärt, warum man auf das Modul "thread" verzichten sollte und lieber zu "threading" greifen sollte. OOP ist das längste Kapitel in diesem Buch (114 Seiten); es wird erklärt, warum man auf __del__ verzichten soll, was die neuen Features von New-Style-Klassen sind, wie man von Typen erben kann (Delegation) und vieles mehr. Beispiele zum Parsen von XML-Dateien wirst du allerdings nicht finden; mit dem Wissen, das du aus dem Buch hast, wird es aber nicht schwer sein, aus der Doku von ElementTree schlau zu werden.

Und hier noch eine Buchkritik, die gleich am Anfang des Buches zu finden ist:
David Mertz, Ph.D., IBM Developer Works® hat geschrieben: [...] I think this is the best book currently available for learning Python. I would recommend Chun's book over Learning Python (O'Reilly), Programming Python (O'Reilly) or The Quick Python Book (Manning).
@DasIch: uups, zu spät :lol: hab deinen Post vorm Schreiben noch nicht gelesen.

Verfasst: Sonntag 23. November 2008, 19:14
von cajus
@ dasich
Wie meinst du das?

Ich habe doch geschrieben,was in dem Buch enthalten sein soll.

Oder möchtest du wissen,welche Erfahrungeb ich habe?Ich kann etwas php und c,SQL kann ich gar nicht.


mfG

edit @ vorposter:Ich bin erst zwölf Jahre alt,die drei Jahre Schulenglisch reichen glaube ich noch nicht.

Verfasst: Sonntag 23. November 2008, 19:26
von DasIch
Frameworks: Template Sprachen: ORMs: Das sind die die mir spontan eingefallen sind und jeder hier könnte dir jetzt eine Kombination dieser librarys vorschlagen und du wüsstest danach genauso viel wie vorher. Such einfach mal nach Python Frameworks, spiel mit jedem rum schau dir an was dir am besten gefällt und frag dann wenn nötig nach einem Buch/Doku/Tut dafür.

Allerdings solltest du dich zuallerst damit anfreunden deine Englisch Kenntnisse ernsthaft nutzen zu müssen.

Verfasst: Sonntag 23. November 2008, 20:03
von Leonidas
Hallo cajus, willkommen im Forum,
cajus hat geschrieben:Oder möchtest du wissen,welche Erfahrungeb ich habe?Ich kann etwas php und c,SQL kann ich gar nicht.
SQL brauchst du gar nicht, weil man in Python sowieso eher ORMs verwendet, das was du aus PHP weißt vergisst du am besten wieder. Lediglich die C-Kenntnisse könnten in irgendwieweit nützlich sein :)
cajus hat geschrieben:edit @ vorposter:Ich bin erst zwölf Jahre alt,die drei Jahre Schulenglisch reichen glaube ich noch nicht.
Quatsch. Wenn man sich nichts vornimmt, dann lernt man nichts. Gerade im Bereich der Programmierung ist Englisch viel wichtiger als jede Programmiersprache die du lernen kannst. Und Computer-Dokumentation ist in Englisch auch nur halb so wild, denn viele dir bereits bekannte Begriffe sind sowieso Englisch, noch dazu sind das Sachbücher und keine Belletristik, wo man die Feinheiten des Wortwitzes erst mit zunehmender Sprachkenntnis zu schätzen weiß. Ich habe viel Englisch eben durch das Lesen von Englischer Dokumentation gelernt und mit 12 Jahren geht das sicher viel einfacher als zu irgendeinemspäteren Zeitpunkt.

Wenn du unbedingt Web-Sachen machen willst (wovon ich um ehrlich zu sein als erstes Projekt abreaten würde, denn es ist sehr, sehr unfassend) dann solltest du dir ein Web-Framework zulegen, für den Anfang wohl am besten Django und dort deine Sachen zu implementieren versuchen. Wenn es dir dann an einigen Stellen an Wissen fehlt, dann liest/lernst das eben nach. Alles von Anfang an zu lernen ist ein großer Zeitaufwand und mangels sofort sichtbarer Resultate oftmals eher frustrierend. Ich weiß wovon ich spreche.

Verfasst: Sonntag 23. November 2008, 23:16
von gerold
Leonidas hat geschrieben:SQL brauchst du gar nicht, weil man in Python sowieso eher ORMs verwendet
Hallo Leonidas!

Ich bin anderer Meinung. SQL ist in meinen Augen einfacher und kontrollierbarer als der Umgang mit ORMs. ORMs verlieren, meiner Meinung nach, an Nutzbarkeit sobald die Anforderungen komplexer werden. Ich lese gerade wieder ein Buch, in dem etwas auf die Unterschiede zwischen drei ORMs eingegangen wird. Es wird erklärt, wir man einen Foto-Blog mit einem ORM programmieren kann. Es vergeht keine Stunde, ohne dass ich mir denke, dass man die Aufgabe mit reinem SQL schöner und ressourcenschonender (schneller) programmieren hätte können. Und so geht es mir immer öfter, wenn ich Code durchlese, der SQLAlchemy, SQLObject oder Dejavu einsetzt. Die anderen ORMs kenne ich nicht. Bei SQLObjekt fällt mir auf, dass z.B. versucht wird, SQL nachzubilden. Da frage ich mich aber, warum auf das mächtige SQL verzichten, wenn versucht wird, es krampfhaft nachzubilden. Nur damit man ohne große Umstellung verschiedene Datenbanksysteme verwenden kann? Das muss ich nicht verstehen, oder?

SQL ist so einfach, dass es von jedem schnell erlernt werden kann. Weiters gibt es hunderte Tools, mit denen man maßgeschneiderte SQL-Anweisungen/-Abfragen erstellt, die man direkt in sein Python-Programm integrieren kann. Per Mausklick, sozusagen. So etwas gibt es für ORMs nicht.

Bevor ich mich da zu sehr reinsteigere (so tragisch ist das Thema nun doch wieder nicht), lasse ich es und wünsche allen eine gute Nacht. :D

lg
Gerold
:-)

Verfasst: Montag 24. November 2008, 14:19
von Y0Gi
Zufällig habe ich kürzlich bei Thalia in der Technikecke gestöbert und dabei "Web Applications with Python" gefunden und überrascht näher angesehen. Dort wird aber primär TurboGears behandelt, das IMHO definitiv keine gute Basis für die Zukunft (von wem oder was auch immer) [mehr] ist.

Als Einsteiger rate ich dir auch zum aktuellen und populären Komplettpaket Django. Dennoch verbirgt sich dahinter weit mehr, als du dir vorstellen kannst: Datenbanken, Modellierung, Template Engines, URL-Routing, HTTP, XHTML, CSS, JavaScript, AJAX plus die Pakete, die dieses umsetzen, sind *sehr* viele, teilweise *sehr* umfangreiche Bereiche. Ein einfacher, kombinierter Startpunkt ist gut, aber das ist nur der Anfang.

gerold: Ich habe viele Jahre mit SQL gearbeitet und nutze es heute noch, um sowohl während der Entwicklung als auch im Produktionsbetrieb Daten in meinen Tabellen herumzuschubsen. Für meine Anwendungen selbst bin ich nach durchwachsenen Erfahrungen mit SQLObject allerdings von SQLAlchemy und seinem Query-Ansatz* schwer begeistert.

Dass ich mit einem ORM nur eine Sprache, Python, konsequent verwenden kann, gefällt mir sehr gut. SQL in Stringform einzubringen, wie es z. B. in der PHP-Welt noch an der Tagesordnung sein dürfte (wo allerdings auch fleißig andere Dinge wie PHP-Code und HTML gemischt werden) hat mich schon immer gestört. Das geht aber nur mit einem wirklich guten ORM, zugegeben. Ebenso empfinde ich meine SQL-Kenntnisse als sehr hilfreich und wichtig, um zu verstehen, was vor sich geht, was es zu erreichen gilt und wie man optimieren kann. Mit SQLAlchemy bin ich in der Lage, effiziente, kombinierte SQL-Queries in schönem Python in sehr kurzer Zeit zu erzeugen.

Der absolute Killerpunkt für mich ist jedoch der, dass SQL nur Tupel (oder, wenn man mit DB-Adapter-spezifischen Cursorn arbeitet, immerhin Dictionaries) ausspuckt, die Zahlen und Strings enthalten. Ein ORM macht es mir möglich, direkt mit Klasseninstanzen zu arbeiten und komfortabel mit Datumsobjekten, Kindobjekten, Adjazenzlisten und mehr zu hantieren. Bis dahin sehe ich ein, dass SQL mehr oder weniger genau so gut funktioniert, aber genau der Übergang in die Welt der Python-Objekte und deren Relation ist der Punkt, an dem SQL zurück bleibt und es umständlich wird.

Davon ab gefällt mir die Möglichkeit, das Schema im Code - gemeinsam mit zusätzlichen Properties und Methoden - zu definieren, um daraus das Schema generieren zu können; egal ob ich das gerade für MySQL oder PostgreSQL oder SQLite einsetzen möchte (und sei es nur für Unittests).

Weder werfe ich dir vor, dass du bei SQL bleibst, noch will ich dich konvertieren. Es geht aber auch anders, wenn man vernünftige Mittel hat - ich denke, du wärst zumindest angenehm überrascht.

*) Die Präsentation Ingredients for Building a DSL in Python (Episode I) geht sehr schön darauf ein, wie SQLAlchemy mit generativen Queries (War das der Ausdruck?) eine DSL bildet, ähnlich wie das was jQuery + Co. machen, um hier SQL sehr ähnliche Abfragen zu gestalten.

Verfasst: Montag 24. November 2008, 14:43
von cajus
Hat jemand mit diesem Buch Erffahrung?http://www.amazon.de/gp/product/3836211106/
Ich möchte erst einmal Python ohne Framework lernen und kleine Programme erstellen.
Weiß jemand über welche Version das Buch handelt (ich hoffe ich war nicht zu blöd und habe es übersehen)?

Verfasst: Montag 24. November 2008, 14:52
von derdon
Such mal im Forum nach galileo openbook o.ä. Ist das unbeliebteste Buch hier.

Verfasst: Montag 24. November 2008, 14:52
von burli
Hi, das gibts auch als Open Book, allerdings sind einige Kapitel doch recht fragwürdig. Deshalb ist das mit Vorsicht zu genießen

Verfasst: Montag 24. November 2008, 15:20
von BlackJack
@gerold: Deine Argumente SQL oder ORM klingen so ein bisschen nach C vs. Python. Die Resourcen, die "verschwendet" werden, gibt man für eine einfacherere API aus, die einem Arbeit abnimmt. Dafür hat man nicht mehr die volle Kontrolle.

Wobei ich SQL auch nicht unbendingt als leicht bezeichnen würde. Das ist so ähnlich wie bei Python -- ``print`` ist einfach, `itertools` braucht 'ne Weile bis man's beherrscht. So ähnlich ist das bei SQL -- ein simples ``SELECT`` ist einfach, aber wenn verschiedene ``JOIN``\s, ``GROUP BY`` und ``HAVING`` dazu kommen, kann auch schon mal der Kopf rauchen.

Was mich persönlich an SQL am meisten stört, sind die grossen Unterschiede bei verschiedenen DBMS schon bei den einfachsten Dingen wie Namen von Datentypen oder wie man so etwas wie ein automatisches ID-Feld deklariert.

Verfasst: Montag 24. November 2008, 16:23
von Leonidas
cajus hat geschrieben:Ich möchte erst einmal Python ohne Framework lernen und kleine Programme erstellen.
Web ohne Framework? Schlechte Idee, ehrlich. Vor allem da du anfangs nicht immer weißt was wie geht, da bietet dir ein Framework ein Grundgerüst und einige Best Practices nach denen du dich richten kannst.

Verfasst: Montag 24. November 2008, 18:21
von cajus
Ich meinte mit Programm ein offline-Programm,wie langwierig es ist,ein web-script in nicht nur dafür entworfenen Sprachen zu erstellen,kenne ich aus c.

Z.B. muss man dann Funktionen wie die php-funktion htmlspecialchars() selber programmieren,dass ist zu umständlich.


Oder ist es besser,auch offline ein Framework zu nutzen?

Verfasst: Montag 24. November 2008, 18:23
von DasIch
cajus hat geschrieben:Oder ist es besser,auch offline ein Framework zu nutzen?
Ja.

Verfasst: Montag 24. November 2008, 20:22
von Leonidas
DasIch hat geschrieben:
cajus hat geschrieben:Oder ist es besser,auch offline ein Framework zu nutzen?
Ja.
Nein.

Das heißt wohl eher: hängt ab was man machen will. Es gibt eigentlich nur wenige "offline" Frameworks, wie man für bestimmte Dinge einsetzen würde, für andere nicht.

Verfasst: Montag 24. November 2008, 20:52
von Darii
cajus hat geschrieben:Ich meinte mit Programm ein offline-Programm,wie langwierig es ist,ein web-script in nicht nur dafür entworfenen Sprachen zu erstellen,kenne ich aus c.
Auch in PHP ist es nicht verkehrt ein Framework zu verwenden.
Z.B. muss man dann Funktionen wie die php-funktion htmlspecialchars() selber programmieren,dass ist zu umständlich.
Viele Funktionen die du suchst gibt es im cgi-Modul, z.B. cgi.escape

Verfasst: Mittwoch 26. November 2008, 18:37
von cajus
Danke für die Einstiegshilfen an alle!

Morgen kaufe ich mir wahrscheinlich das Buch "Das Python Praxisbuch" (http://www.amazon.de/dp/3827325439).
In diesem Buch steht alles,was ich am Anfang wissen möchte.


Thread kann also geschlossen werden.

Über die Vor- und Nachteile von DBs könnt ihr ja noch woanders diskutieren :lol:

Verfasst: Mittwoch 26. November 2008, 19:00
von numerix
cajus hat geschrieben:Morgen kaufe ich mir wahrscheinlich das Buch "Das Python Praxisbuch" (http://www.amazon.de/dp/3827325439).
In diesem Buch steht alles,was ich am Anfang wissen möchte.
Dieses Buch kenne ich nicht (aber den Preis - hui!). Nachdem, was inzwischen über dein Alter, deine Ziele und Vorkenntnisse deutlich geworden ist, empfehle ich dir "Michael Weigend: Objektorientierte Programmierung mit Python."

Da ist alles drin, was du wolltest - allerdings nicht SQL (ein Kapitel zu Datenbanken gibt es allerdings). Außerdem eignet es sich IMHO in besonderer Weise für Programmiereinsteiger, weil grundlegende Strukturen und Begriffe der Programmierung behandelt werden.