• 18.07.2025, 18:49
  • Registrieren
  • Anmelden
  • Sie sind nicht angemeldet.

 

bluedragon_italy

Full Member

Python und SQL, Hilfe gesucht

Sonntag, 21. Mai 2006, 10:55

Hallo,
ich habe hier auf meiner Gentoo Kiste ein Problem welches ich gerne dazu nutzen möchte um Python zu lernen.
Grob gesagt soll es ein Python Script werden welches per cronjob gestartet wird und ein paar Sachen mit der Datenbank anstellt.
Es sollte nach der Verbindung zur DB
- Felder mit einem Bestimmten Wert löschen
- Wenn Count(*) > 100
- neue Tabelle erstellen mit timestamp als name
- werte von der alten in die neue Tabelle kopieren (gleiche Struktur)
- Tabelleninhalt der alten Tabelle löschen.

Wie man sieht sind es im prinzip ja nur einige sql befehle.
Aber genau hier liegt das Problem:
ich habe schon einige Turotials durch, aber ich bekomme nicht einmal eine Verbindung zur Mysql DB zustande :-[

Jedes mal wird es mit anderen Modulen gemacht und ich verliere da den Überblick.
Könnte mir jemand helfen eine simple Verbindung herzustellen und eine Query abzusenden bzw. das Resultset zu verarbeiten(nur mal testweise ausgeben)
Den Rest müsste ich alleine schaffen....

Grüße
bluedragon_italy

iNFiNiTE

God

Re: Python und SQL, Hilfe gesucht

Sonntag, 21. Mai 2006, 12:16

hi,

ich mache (lerne) gerade dasselbe und dieses tutorial kann ich da nur weiter empfehlen !

edit: schau dir vorallem seite 3 des tutorials an, ist wirklich super einfach :)

gruß,
messi

bluedragon_italy

Full Member

Re: Python und SQL, Hilfe gesucht

Sonntag, 21. Mai 2006, 13:08

Zitat von »messi@planung«

hi,

ich mache (lerne) gerade dasselbe und dieses tutorial kann ich da nur weiter empfehlen !

edit: schau dir vorallem seite 3 des tutorials an, ist wirklich super einfach :)

gruß,
messi

hi,
ich arbeite mich gerade dadurch, funktioniert soweit prima
danke
weisst du zufällig wie ich den aktuellen timestamp erhalte?
ich mache das gerade mit

Quellcode

1
2
3
4
5
from time import ctime
.....
.....
.....
print ctime()

dadurch erhalte ich als ausgabe:

Sun May 21 11:04:40 2006
ich bräuchte aber was in der form 1148208087

Danke für deine Hilfe

bluedragon_italy

Y0Gi

God

Re: Python und SQL, Hilfe gesucht

Sonntag, 21. Mai 2006, 13:31

time.time()


Und der Vollständigkeit halber, hier nochmal How-to MySQL mit Python:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#!/usr/bin/env python

# MySQL-Connector laden; 3rd-party
import MySQLdb


# Verbindung herstellen
_connection = MySQLdb.connect(
  host='your_hostname',
  user='your_username',
  passwd='your_password',
  db='your_database')

# Cursor beziehen; in diesem Fall einen, der den Zugriff
# per Feldname und nicht nur per Index ermöglicht
cursor = _connection.cursor(MySQLdb.cursors.DictCursor)

# SQL-Query absetzen
cursor.execute('''
  SELECT vorname, nachname
  FROM `personen`
  WHERE (alter > 18)
  ORDER BY nachname DESC;
''')

# Alle Ergebniszeilen holen
rows = cursor.fetchall()

# Ergebnisse ausgeben
print '%d Personen' % len(rows)
print '-' * 12
for row in rows:
  print '%s, %s' % (row['nachname'], row['vorname'])

bluedragon_italy

Full Member

Re: Python und SQL, Hilfe gesucht

Sonntag, 21. Mai 2006, 17:48

hallo, danke...
ich habe mir jetzt einen code zusammengebastelt,
der zwar nicht sauber und schön ist aber eigentlich funktionieren sollte.

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#!/usr/bin/python
import MySQLdb
import os
import time
db = MySQLdb.connect(host="localhost", user="apache", passwd="apache",db="apache")
cursor = db.cursor()
cursor.execute("SELECT COUNT(*) FROM access_log")
row = cursor.fetchone()
anz_log =  row[0]
print anz_log
cursor.execute("DELETE FROM access_log WHERE agent='-'")
cursor.execute("DELETE FROM access_log WHERE remote_host='192.168.0.1'")
cursor.execute("SELECT COUNT(*) FROM access_log")
row = cursor.fetchone()
new_anz_log = row[0]
print new_anz_log
zeit = time.time()
if anz_log>50:
        sql_create_statement =  "create table access_log_"+str(zeit)[0:-3]+""" (
                id char(19) ,
                agent varchar(255) ,
                bytes_sent int unsigned ,
                child_pid smallint unsigned,
                cookie varchar(255),
                machine_id varchar(25),
                request_file varchar(255),
                referer varchar(255) ,
                remote_host varchar(50) ,
                remote_logname varchar(50) ,
                remote_user varchar(50) ,
                request_duration smallint unsigned ,
                request_line varchar(255),
                request_method varchar(10) ,
                request_protocol varchar(10) ,
                request_time char(28),
                request_uri varchar(255),
                request_args varchar(255),
                server_port smallint unsigned,
                ssl_cipher varchar(25),
                 ssl_keysize smallint unsigned,
                ssl_maxkeysize smallint unsigned,
                status smallint unsigned ,
                time_stamp int unsigned ,
                virtual_host varchar(255)
          );
        """
        print sql_create_statement
        cursor.execute(sql_create_statement)
        cursor.execute("SELECT * FROM access_log WHERE 1")
        rows = cursor.fetchall()
        for row in rows:
                sqlstatement =  'INSERT INTO access_log_'+str(zeit)[0:-3]+' VALUES(\'%s\',\'%s\'\'%s\',\'%s\',\'%s\',\'%s\',\'%s\',\'%s\',\'%$
                print sqlstatement
                cursor.execute(sqlstatement)


jetzt bekomme ich a ber folgenden Fehler:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
server ~ # python ./python_test.py build
68
66
create table access_log_1148226196 (
                id char(19) ,
                agent varchar(255) ,
                bytes_sent int unsigned ,
                child_pid smallint unsigned,
                cookie varchar(255),
                machine_id varchar(25),
                request_file varchar(255),
                referer varchar(255) ,
                remote_host varchar(50) ,
                remote_logname varchar(50) ,
                remote_user varchar(50) ,
                request_duration smallint unsigned ,
                request_line varchar(255),
                request_method varchar(10) ,
                request_protocol varchar(10) ,
                request_time char(28),
                request_uri varchar(255),
                request_args varchar(255),
                server_port smallint unsigned,
                ssl_cipher varchar(25),
                 ssl_keysize smallint unsigned,
                ssl_maxkeysize smallint unsigned,
                status smallint unsigned ,
                time_stamp int unsigned ,
                virtual_host varchar(255)
                );

INSERT INTO access_log_1148226196 VALUES('','Mozilla/5.0 (Windows NT 5.1; U; en) Opera 9.00''13205','6178','None','None','None','[url]http://forum.aqua-computer.de/index.php?page=Thread&threadID=77538','84.163.67.124','None','-','0','GET[/url] /banner_book.gif HTTP/1.1','GET','HTTP/1.1','[21/May/2006:10:27:33 +0000]','/banner_book.gif','None','80','None','None','None','200','1148207253','server')
Traceback (most recent call last):
  File "/www/python/python_test.py", line 54, in ?
    cursor.execute(sqlstatement)
  File "/usr/lib/python2.4/site-packages/MySQLdb/cursors.py", line 163, in execute
    self.errorhandler(self, exc, value)
  File "/usr/lib/python2.4/site-packages/MySQLdb/connections.py", line 35, in defaulterrorhandler
    raise errorclass, errorvalue
_mysql_exceptions.OperationalError: (1136, [b]"Column count doesn't match value count at row 1[/b]")


Ich weiß dass das ein mysql fehler ist der aussagt, dass Die Anzahl der Spalten in der Datenbank nicht mit der Anzahl der Spalte in der SQL Abfrage übereinstimmt.
Ich habe aber nachgezählt und es sollte eigentlich stimmen.
Ist es also doch ein Fehler von python und wie behebe ich ihn?

Y0Gi

God

Re: Python und SQL, Hilfe gesucht

Sonntag, 21. Mai 2006, 18:17

Hat das Forum da was abgeschnitten oder wieso hört das in Zeile 54 (vgl. Traceback) mit $ und nicht mit ') auf?

Jene Zeile kannst du übrigens deutlich klarer formulieren, indem du a) den String in doppelte Anführungszeichen einschließt und dafür die escapenden Backslashes vor den einfachen Hochkommata weglässt und b) könntest du eine Reihe von Platzhaltern auch wiefolgt erzeugen:

Quellcode

1
s = "... VALUES ('" + "', '".join(['%s' for i in range(10)]) + "')"

oder etwas einfacher:

Quellcode

1
s= "... VALUES (" + ("'%s', " * 10) + "'%s')"

bluedragon_italy

Full Member

Re: Python und SQL, Hilfe gesucht

Sonntag, 21. Mai 2006, 19:54

Hallo Y0Gi,

danke für deine Hilfe,
der String wird jetzt wie folgt zusammengesetzt:

Quellcode

1
2
3
4
5
6
.....
.....
sqlstatement =  "INSERT INTO access_log_"+str(zeit)[0:-3]+" VALUES (" + ("'%s', " * 24) + "\'%s\')" % (str(row[0]), str(row[1]),str(row[2]),str(row[3]),str(row[4]),str(row[5]),str(row[6]),str(row[7]),str(row[8]),str(row[9]),str(row[10]),str(row[11]),str(row[12]),str(row[13]),str(row[14]),str(row[15]),str(row[16]),str(row[17]),str(row[18]), str(row[19]),str(row[20]),str(row[21]),str(row[22]),str(row[23]),str(row[24]))

.....
.....

Habe noch vorsichtshalber alles in Strings umgewandelt...
In Zeile 54 hat es nur mit $ aufgehört, weil der Editor(nano) nicht alles in einer zeile anzeigen konnte und dann wird es abgeschnitten.
habe beim kopieren nicht darauf geachtet.
Nun erhalte ich aber folgenden fehler mit dem ich nichts anzufangen weiß:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
server ~ # python ./python_test.py build
79
79
create table access_log_1148233823 (
                id char(19) ,
                agent varchar(255) ,
                bytes_sent int unsigned ,
                child_pid smallint unsigned,
                cookie varchar(255),
                machine_id varchar(25),
                request_file varchar(255),
                referer varchar(255) ,
                remote_host varchar(50) ,
                remote_logname varchar(50) ,
                remote_user varchar(50) ,
                request_duration smallint unsigned ,
                request_line varchar(255),
                request_method varchar(10) ,
                request_protocol varchar(10) ,
                request_time char(28),
                request_uri varchar(255),
                request_args varchar(255),
                server_port smallint unsigned,
                ssl_cipher varchar(25),
                 ssl_keysize smallint unsigned,
                ssl_maxkeysize smallint unsigned,
                status smallint unsigned ,
                time_stamp int unsigned ,
                virtual_host varchar(255)
                );

Traceback (most recent call last):
  File "/www/python/python_test.py", line 55, in ?
    sqlstatement =  "INSERT INTO access_log_"+str(zeit)[0:-3]+" VALUES (" + ("'%s', " * 24) + "\'%s\')" % (str(row[0]), str(row[1]),str(row[2]),str(row[3]),str(row[4]),str(row[5]),str(row[6]),str(row[7]),str(row[8]),str(row[9]),str(row[10]),str(row[11]),str(row[12]),str(row[13]),str(row[14]),str(row[15]),str(row[16]),str(row[17]),str(row[18]), str(row[19]),str(row[20]),str(row[21]),str(row[22]),str(row[23]),str(row[24]))
TypeError: not all arguments converted during string formatting

Y0Gi

God

Re: Python und SQL, Hilfe gesucht

Sonntag, 21. Mai 2006, 20:02

Das dürfte heißen, dass du einige %s zuviel hast. Vermutlich genau eines, denn du musst bedenken, dass am Ende bei der Methode ohne join() ein '%s' angehängt wird, das kein Komma am Ende hat.

Weiterhin kannst du anstelle von

Quellcode

1
... % (str(row[0]), str(row[1]),str(row[2]), ...

eine weitaus kompaktere Lösung anwenden:

Quellcode

1
... % (row)

Das ist nämlich schon ein Sequenz-Typ. Zudem sollten alle darin enthaltenen Werte Strings sein, d.h. die Umwandlung entfällt ohnehin. Ist sie doch notwendig, kannst du eine list comprehension verwenden:

Quellcode

1
... % ([str(field) for field in row])

bluedragon_italy

Full Member

Re: Python und SQL, Hilfe gesucht

Sonntag, 21. Mai 2006, 20:25

Hi,
danke für deine schnelle Hilfe

Jetz sieht das Statement schun viel freundlicher aus :D :

Quellcode

1
sqlstatement =  "INSERT INTO access_log_"+str(zeit)[0:-3]+" VALUES (" + ("'%s', " * 23) + "'%s')" % ([str(field) for field in row])


Jetzt bekomme ich aber eine Fehler, weil der SQL-String die falsche Form hat..
Ich wüsste zwar wie er richtig gehört,
blicke aber durch diese Zusammensetzung nicht mehr durch...
und weis desshalb auch nicht wie ändern :-[

Hier der String inkl. Fehler:

Quellcode

1
2
3
4
5
6
7
8
9
INSERT INTO access_log_1148235478 VALUES ('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '['', 'Mozilla/5.0 (Windows NT 5.1; U; en) Opera 9.00', '13205', '6178', 'None', 'None', 'None', '[url]http://forum.aqua-computer.de/index.php?page=Thread&threadID=77538',[/url] '84.163.67.124', 'None', '-', '0', 'GET /banner_book.gif HTTP/1.1', 'GET', 'HTTP/1.1', '[21/May/2006:10:27:33 +0000]', '/banner_book.gif', 'None', '80', 'None', 'None', 'None', '200', '1148207253', 'server']')
Traceback (most recent call last):
  File "/www/python/python_test.py", line 57, in ?
    cursor.execute(sqlstatement)
  File "/usr/lib/python2.4/site-packages/MySQLdb/cursors.py", line 163, in execute
    self.errorhandler(self, exc, value)
  File "/usr/lib/python2.4/site-packages/MySQLdb/connections.py", line 35, in defaulterrorhandler
    raise errorclass, errorvalue
_mysql_exceptions.ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Mozilla/5.0 (Windows NT 5.1; U; en) Opera 9.00', '13205', '6178', 'None', 'None'' at line 1")


Villeicht könntest du ja mal bitte einen kurzen Blick drauf werfen
was du vermutlich eh schon gemacht hast wenn du diese Zeilen liest ;)

Grüße aus Italien
bluedragon_italy

Y0Gi

God

Re: Python und SQL, Hilfe gesucht

Sonntag, 21. Mai 2006, 20:55

Mach mal folgendes in deinem Loop:

Quellcode

1
2
3
sqlstatement_raw =  "INSERT INTO access_log_" + str(zeit)[0:-3] + " VALUES (" + ("%s, " * 23) + "%s)"
print sqlstatement_raw
cursor.execute(sqlstatement_raw, [str(field) for field in row])


Das hat zur Folge, dass du nicht durch Python-%-Formatierung den Query komplett zusammenbaust, sondern dies dem SQL-Layer überlässt. Der wiederum, so definiert es die für Python-DB-Connectoren einheitliche DB-API (2.0), beherrscht Platzhalter - im Fall von MySQLdb ebenfalls %s. Deshalb fehlen in der ersten Zeile auch die Hochkommata um die %s herum. MySQLdb sorgt nämlich auch dafür, dass die dort einzufügenden Daten (die cursor.execute() als zweiter Parameter übergeben werden) automatisch escaped werden, du also keine Probleme mehr mit unmaskierten Zeichen hast (was auch SQL-Injection ausschließt). Denn unmaskierte Zeichen aus den Inhalten deiner ersten Tabelle scheinen hier die Ursache für das Problem zu sein.

bluedragon_italy

Full Member

Re: Python und SQL, Hilfe gesucht

Sonntag, 21. Mai 2006, 21:23

Quellcode

1
2
3
4
5
6
7
INSERT INTO access_log_1148239197 VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)
Traceback (most recent call last):
  File "/www/python/python_test.py", line 59, in ?
    cursor.execute(sqlstatement_raw, [str(field) for field in row])
  File "/usr/lib/python2.4/site-packages/MySQLdb/cursors.py", line 148, in execute
    query = query % db.literal(args)
TypeError: not all arguments converted during string formatting

Danke für deine Hilfe, aber irgendwo ist hier immer noch der Hund begraben.... :-/

Danke trotzdem

Y0Gi

God

Re: Python und SQL, Hilfe gesucht

Sonntag, 21. Mai 2006, 21:33

Mach mal ein len(row) um die Anzahl der Werte in einem zurückgelieferten Datensatz zu bekommen. Dieser Wert - 1 sollte bei '%s' * X für das X stehen.

bluedragon_italy

Full Member

Re: Python und SQL, Hilfe gesucht

Sonntag, 21. Mai 2006, 21:54

Hallo,
danke für deine geduld.
Jetz wird der 1. Datensatz in die neue Tabelle geschrieben, dann erhalte ich folgenden Fehler:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
INSERT INTO access_log_1148241099 VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)
Traceback (most recent call last):
  File "/www/python/python_test.py", line 60, in ?
    cursor.execute(sqlstatement_raw, [str(field) for field in row])
  File "/usr/lib/python2.4/site-packages/MySQLdb/cursors.py", line 165, in execute
    self._warning_check()
  File "/usr/lib/python2.4/site-packages/MySQLdb/cursors.py", line 80, in _warning_check
    warn(w[-1], self.Warning, 3)
  File "/usr/lib/python2.4/warnings.py", line 61, in warn
    warn_explicit(message, category, filename, lineno, module, registry)
  File "/usr/lib/python2.4/warnings.py", line 79, in warn_explicit
    if registry.get(key):
TypeError: unhashable type

bluedragon_italy

Full Member

Re: Python und SQL, Hilfe gesucht

Montag, 22. Mai 2006, 21:05

Hi,
sorry für Doppelpost, komme aber ohne Hilfe nicht weiter :(
Hier mein aktueller Code:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#!/usr/bin/python
import MySQLdb
import os
import time
db = MySQLdb.connect(host="localhost", user="apache", passwd="apache",db="apache")
cursor = db.cursor()
cursor.execute("SELECT COUNT(*) FROM access_log")
row = cursor.fetchone()
anz_log =  row[0]
cursor.execute("DELETE FROM access_log WHERE agent='-'")
cursor.execute("DELETE FROM access_log WHERE remote_host='192.168.0.1'")
cursor.execute("SELECT COUNT(*) FROM access_log")
row = cursor.fetchone()
new_anz_log = row[0]
zeit = time.time()
if anz_log>50:
      sql_create_statement =  "create table access_log_"+str(zeit)[0:-3]+""" (
              id char(19) ,
              agent varchar(255) ,
              bytes_sent int unsigned ,
              child_pid smallint unsigned,
              cookie varchar(255),
              machine_id varchar(25),
              request_file varchar(255),
              referer varchar(255) ,
              remote_host varchar(50) ,
              remote_logname varchar(50) ,
              remote_user varchar(50) ,
              request_duration smallint unsigned ,
              request_line varchar(255),
              request_method varchar(10) ,
              request_protocol varchar(10) ,
              request_time char(28),
              request_uri varchar(255),
              request_args varchar(255),
              server_port smallint unsigned,
              ssl_cipher varchar(25),
                    ssl_keysize smallint unsigned,
              ssl_maxkeysize smallint unsigned,
              status smallint unsigned ,
              time_stamp int unsigned ,
              virtual_host varchar(255)
            );
      """
      cursor.execute(sql_create_statement)
      cursor.execute("SELECT * FROM access_log WHERE 1")
      rows = cursor.fetchall()
      for row in rows:
            sqlstatement_raw =  "INSERT INTO access_log_" + str(zeit)[0:-3] + " VALUES (" + ("%s, " * (len(row)-1)) + "%s)"
            print sqlstatement_raw
            cursor.execute(sqlstatement_raw, [str(field) for field in row])
      print "fertig"


die Meldung nach dem Ausführen:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
server ~ # python /www/python/python_test.py
INSERT INTO access_log_1148324312 VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)
Traceback (most recent call last):
  File "/www/python/python_test.py", line 51, in ?
    cursor.execute(sqlstatement_raw, [str(field) for field in row])
  File "/usr/lib/python2.4/site-packages/MySQLdb/cursors.py", line 165, in execute
    self._warning_check()
  File "/usr/lib/python2.4/site-packages/MySQLdb/cursors.py", line 80, in _warning_check
    warn(w[-1], self.Warning, 3)
  File "/usr/lib/python2.4/warnings.py", line 61, in warn
    warn_explicit(message, category, filename, lineno, module, registry)
  File "/usr/lib/python2.4/warnings.py", line 79, in warn_explicit
    if registry.get(key):
TypeError: [b]unhashable type[/b]

Die neue tabelle wird korrekt erzeugt (z.B. access_log_1148324312 )
Dann wird die erste Zeile der access_log Tabelle übertragen, und gespeichert,
daraufhin kommp der Fehler mit den unhasable type.
Und Google spuckt in Verbindung mit Python nur 2 Seiten dazu aus, mit denen ich nichts anfangen kann.

Irgendwelche Lösungsvorschläge?

Grüße bluedragon_italy

Y0Gi

God

Re: Python und SQL, Hilfe gesucht

Montag, 22. Mai 2006, 21:31

Wenn's mit dem ersten Datensatz klappt, kann es der Code alleine eigentlich nicht sein. Hast du mal geschaut, in welcher Reihenfolge MySQL die Datensätze zurückliefert, wenn du manuell (mysql-Kommandozeilen-Applikation oder phpMyAdmin; alternativ im letzten Loop ein "print row" einfügen) den SELECT ausführst, und dann den zweiten Datensatz genauer betrachtet? Enthält der irgendwelche Sonderzeichen? Umlaute? Nicht-Unicode? NULLs?

bluedragon_italy

Full Member

Re: Python und SQL, Hilfe gesucht

Montag, 22. Mai 2006, 21:45

Hallo,
ich glaube der Fehler liegt an den Daten die ich eintragen möchte.
Die Zeile würde dann so aussehen:

Quellcode

1
('', 'Mozilla/5.0 (Windows NT 5.1; U; en) Opera 9.00', 13205L, 6178, None, None, None, '[url]http://forum.aqua-computer.de/index.php?page=Thread&threadID=77538',[/url] '84.163.67.124', None, '-', 0, 'GET /banner_book.gif HTTP/1.1', 'GET', 'HTTP/1.1', '[21/May/2006:10:27:33 +0000]', '/banner_book.gif', None, 80, None, None, None, 200, 1148207253L, 'server')

Wenn ich alle Werte unter ' ' setzte funktioniert es im MySQL Browser,
dann habe ich zwar nicht mehr NULL in leeren Feldern sondern 'None', was mir aber eigentlich egal wäre.
Wie kann ich die ganzen Werte unter ' ' setzen?

Grüße aus Italien

Y0Gi

God

Re: Python und SQL, Hilfe gesucht

Dienstag, 23. Mai 2006, 01:38

Wenn ich das richtig verstehe, würdest du die List Comprehension zu folgender erweitern:

Quellcode

1
["'%s'" % str(field) for field in row]

bluedragon_italy

Full Member

Re: Python und SQL, Hilfe gesucht

Mittwoch, 24. Mai 2006, 00:10

Zitat von »Y0Gi«

Wenn ich das richtig verstehe, würdest du die List Comprehension zu folgender erweitern:

Quellcode

1
["'%s'" % str(field) for field in row]


Hi,
danke bin jetzt in der Zwischenzeit dahinter gekommen, dass das Problem mit NULL-Werten in der Ausgangstabelle bestand.
Anstelle von NULL oder ' ' lieferte Python immer none zurück, und das lässt sich halt schlecht in eine Spalte vom Typ Int schreiben :P

Habe es jetzt hinbekommen indem ich den Typ der Spalte geänderet habe.

Danke für deine geduldige Hilfe.

BTW: Kannst du mir ein gutes Anfängerbuch im Bezug auf Python empfehlen?? Oder Online Tutorials?

Grüße
bluedragon_italy

Y0Gi

God

Re: Python und SQL, Hilfe gesucht

Mittwoch, 24. Mai 2006, 01:03

Sehr gut.

Die in meinen Augen besten Einführung ist das offizielle Tutorial vom Erfinder, Guido van Rossum. Gibt's irgendwo auch auf Deutsch, aber auch auf Englisch ist es relativ gut zu lesen und verständlich.