Why 'files.py' does not print the filenames into a table format?

Simpleton support at superhost.gr
Mon Jun 17 05:07:49 EDT 2013


On 17/6/2013 10:00 πμ, Steven D'Aprano wrote:
> On Mon, 17 Jun 2013 09:11:05 +0300, Νίκος wrote:
>
>> everything work as expected but not the part when the counter of a
>> filename gets increased when the file have been requested.
>>
>> I don't see how since:
>>
>> if filename:
>> 	#update file counter
>> 	cur.execute('''UPDATE files SET hits = hits + 1, host = %s,
>>        lastvisit = %s WHERE url = %s''', (host, lastvisit, filename) )
>
>
There isn'tmuch to say ehre. You already know the code that im using 
inside files.pu and the question is that this execute never gets to execute.

# 
=================================================================================================================
# Make sure that ALL database records are filenames in existance
# 
=================================================================================================================
filenames = []

# Switch filenames from (utf8 bytestrings => unicode strings) and trim 
them from their paths
for utf8_filename in utf8_filenames:
	filenames.append( utf8_filename.decode('utf-8').replace( 
'/home/nikos/public_html/data/apps/', '' ) )

# Check the presence of a database file against the dir files and delete 
record if it doesn't exist
cur.execute('''SELECT url FROM files''')
data = cur.fetchall()

# Delete spurious database records
for rec in data:
	if rec not in filenames:
		cur.execute('''DELETE FROM files WHERE url = %s''', rec )

# Load'em
for filename in filenames:
	try:
		# Check the presence of current filename against it's database presence
		cur.execute('''SELECT url FROM files WHERE url = %s''', filename )
		data = cur.fetchone()

		if not data:
			# First time for file; primary key is automatic, hit is defaulted
			cur.execute('''INSERT INTO files (url, host, lastvisit) VALUES (%s, 
%s, %s)''', (filename, host, lastvisit) )
	except pymysql.ProgrammingError as e:
		print( repr(e) )


# 
=================================================================================================================
# Display ALL files, each with its own download button
# 
=================================================================================================================
print('''<body background='/data/images/star.jpg'>
		 <center><img src='/data/images/download.gif'><br><br>
		 <table border=5 cellpadding=5 bgcolor=green>
''')

try:
	cur.execute( '''SELECT * FROM files ORDER BY lastvisit DESC''' )
	data = cur.fetchall()
	
	for row in data:
		(filename, hits, host, lastvisit) = row
		lastvisit = lastvisit.strftime('%A %e %b, %H:%M')
		
		print('''
		<form method="get" action="/cgi-bin/files.py">
			<tr>
				<td> <center> <input type="submit" name="filename" value="%s"> </td>
				<td> <center> <font color=yellow size=5> %s </td>
				<td> <center> <font color=orange size=4> %s </td>
				<td> <center> <font color=silver size=4> %s </td>
			</tr>
		</form>
		''' % (filename, hits, host, lastvisit) )
	print( '''</table><br><br>''' )
except pymysql.ProgrammingError as e:
	print( repr(e) )
	
sys.exit(0)

After a spcific file gets selected then files.py is reloading grabbign 
the filename as a variable form and:

# 
=================================================================================================================
# If user downloaded a file, thank the user !!!
# 
=================================================================================================================
if filename:
	#update filename's counter if cookie does not exist
	cur.execute('''UPDATE files SET hits = hits + 1, host = %s, lastvisit = 
%s WHERE url = %s''', (host, lastvisit, filename) )

but the execute never happesn.
i ahve tested it

if data:
	print soemthing

but data is always empty.
-- 
What is now proved was at first only imagined!



More information about the Python-list mailing list