Anfänger braucht Hilfe...

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
nemomuk
User
Beiträge: 862
Registriert: Dienstag 6. November 2007, 21:49

Hallo,

also: ich bin ganz neu bei Python und auch ganz neu bei SQL...

also ich hab schon folgendes gebastelt^^:

Code: Alles auswählen

#!/usr/bin/python
import cgi
print "Content-Type: text/html\n"

import _mysql
db=_mysql.connect("localhost","johannes","123345567","johannes")

try:
	cursor.execute( """SELECT 
					a 
					FROM test"""
				)
except:
	db.rollback() # transaktion aufheben
	raise
else:
	db.commit() # transaktion ende
r = db.use_result()
print r
ich habe hier einfach versucht meine bisherigen Programmierkenntnisse anzuwenden, nur leider funktioniert es nicht und ich komme auch mit dem englischen Turorial von sourgeforge nicht weiter...

Was ist hier falsch?
Oder kennt ihr vllt. ein möglichst deutschsprachiges Turorial, kann auch Englisch sein, das Schritt für Schritt einführt?

Danke!

EDIT by Gerold: Code in Code-Tags gesetzt -- beim nächsten Mal bitte selber machen. ;-)
Zuletzt geändert von nemomuk am Mittwoch 7. November 2007, 06:16, insgesamt 1-mal geändert.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

SchneiderWeisse hat geschrieben:Oder kennt ihr vllt. ein möglichst deutschsprachiges Turorial, kann auch Englisch sein, das Schritt für Schritt einführt?
Hallo SchneiderWeisse!

Willkommen im Python-Forum!

Über die Forensuche gefunden:
http://www.python-forum.de/topic-12351.html

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
nemomuk
User
Beiträge: 862
Registriert: Dienstag 6. November 2007, 21:49

also ich habe mich heute nochmal mit all diesen Sachen auseinandergesetzt und komm leider nicht viel weiter, da er mir immer einen Internal Server Error anzeigt...

Code: Alles auswählen

#!/usr/bin/python
import cgi
print "Content-Type: text/html\n"

import _mysql
db = _mysql.connect("localhost","johannes","123123123","johannes")

#alles darüber funktioniert, ab der nächsten Zeile zeigt er mir jedes mal einen Fehler

cursor = db.cursor()

cursor.execute("SELECT a FROM test")


qwe = cursor.fetchone()
wer = cursor.fetchall() 
 
cursor.close()
db.close()
Problem: Leider steht es in jedem Beispiel aber so drin?! Wenn der Verbindung zur Datenbank schon nicht funktionieren würde, dann bekäme ich ja schon eine Fehlermeldung, oder? Also kanns an der nicht liegen... Weiter kenn ich mich leider nicht besser aus. Was mache ich falsch?

vllt. hilft ja ein errorlog:

Code: Alles auswählen

[Wed Nov 07 16:27:31 2007] [error] [client 1] PythonHandler mod_python.cgihandler: AttributeError: cursor
[Wed Nov 07 16:27:32 2007] [error] [client 1] PythonHandler mod_python.cgihandler: Traceback (most recent call last):
[Wed Nov 07 16:27:32 2007] [error] [client 1] PythonHandler mod_python.cgihandler: File "/usr/lib/python2.4/site-packages/mod_python/apache.py", line 299, in HandlerDispatch\n result = object(req)
[Wed Nov 07 16:27:32 2007] [error] [client 1] PythonHandler mod_python.cgihandler: File "/usr/lib/python2.4/site-packages/mod_python/cgihandler.py", line 96, in handler\n imp.load_module(module_name, fd, path, desc)
[Wed Nov 07 16:27:32 2007] [error] [client 1] PythonHandler mod_python.cgihandler: File "/srv/www/vhosts/icoost.com/httpdocs/python.py", line 8, in ?\n cursor = db.cursor()
[Wed Nov 07 16:27:32 2007] [error] [client 1] PythonHandler mod_python.cgihandler: AttributeError: cursor 
Zuletzt geändert von nemomuk am Mittwoch 7. November 2007, 16:30, insgesamt 1-mal geändert.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Hast du Zugriff auf den `error_log` deines Webservers? Dort stehen die Fehlermeldungen drinnen, bei denen im Browser ein "Internal Server Error" steht.
Vermutlich liegt es daran, dass du unter Windows entwickelst mit DOS-Zeilenenden und dann das Skript zu deinem Server im Binärmodus hochlädst. Dann kann der Webserver die erste Zeile nicht lesen (wegen einem überflüssigem Carriage Return) und gibt einen Internal Server Error aus.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
nemomuk
User
Beiträge: 862
Registriert: Dienstag 6. November 2007, 21:49

[Wed Nov 07 16:27:31 2007] [error] [client 1] PythonHandler mod_python.cgihandler: AttributeError: cursor
[Wed Nov 07 16:27:32 2007] [error] [client 1] PythonHandler mod_python.cgihandler: Traceback (most recent call last):
[Wed Nov 07 16:27:32 2007] [error] [client 1] PythonHandler mod_python.cgihandler: File "/usr/lib/python2.4/site-packages/mod_python/apache.py", line 299, in HandlerDispatch\n result = object(req)
[Wed Nov 07 16:27:32 2007] [error] [client 1] PythonHandler mod_python.cgihandler: File "/usr/lib/python2.4/site-packages/mod_python/cgihandler.py", line 96, in handler\n imp.load_module(module_name, fd, path, desc)
[Wed Nov 07 16:27:32 2007] [error] [client 1] PythonHandler mod_python.cgihandler: File "/srv/www/vhosts/icoost.com/httpdocs/python.py", line 8, in ?\n cursor = db.cursor()
[Wed Nov 07 16:27:32 2007] [error] [client 1] PythonHandler mod_python.cgihandler: AttributeError: cursor

Nein, mein Server läuft auf SUSE mit Plesk...
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Du nutzt mod_python! Das hast du nicht gesagt, denn:

mod_python muss weg. Das macht dir Probleme. Der einfachste Weg diese Probleme zu umgehen, ist mod_pyhton loszuwerden und CGIs wirklich durch den Webserver starten lassen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
nemomuk
User
Beiträge: 862
Registriert: Dienstag 6. November 2007, 21:49

ist ein Unterschied Zwischen Python und mod_python? War mir nicht klar, aber das kann ich leider nicht ändern, da der Server leider nur unter diesen Komponenten läuft...

Geht es denn so nicht?
nemomuk
User
Beiträge: 862
Registriert: Dienstag 6. November 2007, 21:49

scheint als ob ich es selbst geschafft hätte^^

Code: Alles auswählen

#!/usr/bin/python
import cgi
print "Content-Type: text/html\n"

import MySQLdb
connection = MySQLdb.connect(
	host="localhost",
	db="johannes",
	user="johannes",
	passwd="123123123")   

curser = connection.cursor()
curser.execute("SELECT a FROM test")
result = curser.fetchall()
connection.commit()       
connection.close()
print result
Muss ich die Connection jedes Mal closen oder kann ich die weiterbehalten, wie bei CGIs möglich ist?

Kann man am Code irgendwas verbessern?
#
Vielen Dank, bisher!
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

SchneiderWeisse hat geschrieben:ist ein Unterschied Zwischen Python und mod_python?
Das ist so als würde man fragen, ob es einen Unterschied zwischen PHP und Apache gibt..

Ja, der Unterschied ist dass Python (genauer CPython in dem Fall) ein Interpreter und mod_python nur die ziemlich ungelungene Integration von Python in den Apache Webserver ist. Aber Python kann man auf viele Weisen mit dem Webserver verbinden, nahezu jede ist besser als mod_python.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten