Vous n’êtes pas connecté.
Bonjour, visiteur, bienvenue sur les forums Aqua Computer Forum. Si c’est votre première visite, nous vous invitons à consulter l’Aide. Elle vous expliquera le fonctionnement de cette page. Pour avoir accès à toutes les fonctionnalités, vous devez vous inscrire. Pour cela, veuillez utiliser le formulaire d’enregistrement, ou bien lisez plus d’informations sur la procédure d’enregistrement. Si vous êtes déjà enregistré, veuillez vous connecter.

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

|
|
Code source |
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])
|
|
|
Code source |
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
|
|
|
Code source |
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
|

|
|
Code source |
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"
|
|
|
Code source |
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]
|
|
|
Code source |
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')
|
|
|
Code source |
1 |
["'%s'" % str(field) for field in row] |
Citation de "Y0Gi"
Wenn ich das richtig verstehe, würdest du die List Comprehension zu folgender erweitern:
![]()
Code source
1 ["'%s'" % str(field) for field in row]

-