Du bist nicht angemeldet.
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
![]() |
Quellcode |
1 2 3 4 5 |
from time import ctime ..... ..... ..... print ctime() |
![]() |
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']) |
![]() |
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) |
![]() |
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]") |
![]() |
Quellcode |
1 |
s = "... VALUES ('" + "', '".join(['%s' for i in range(10)]) + "')" |
![]() |
Quellcode |
1 |
s= "... VALUES (" + ("'%s', " * 10) + "'%s')" |
![]() |
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])) ..... ..... |
![]() |
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 |
![]() |
Quellcode |
1 |
... % (str(row[0]), str(row[1]),str(row[2]), ... |
![]() |
Quellcode |
1 |
... % (row) |
![]() |
Quellcode |
1 |
... % ([str(field) for field in row]) |
![]() |
Quellcode |
1 |
sqlstatement = "INSERT INTO access_log_"+str(zeit)[0:-3]+" VALUES (" + ("'%s', " * 23) + "'%s')" % ([str(field) for field in row]) |
![]() |
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") |
![]() |
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]) |
![]() |
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 |
![]() |
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 |
![]() |
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" |
![]() |
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] |
![]() |
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') |
![]() |
Quellcode |
1 |
["'%s'" % str(field) for field in row] |
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]
-