Serving Banner Ads

Problem

You want to display banner ads by choosing images on the fly from a set of images.

Solution

Use a script that selects a random row from an image table and sends the image to the client.

Discussion

The display_image.pl script shown in Retrieving Images or Other Binary Data assumes that the URL contains a parameter that names the image to be sent to the client. Another application might determine which image to display for itself. One popular image-related use for web programming is to serve banner advertisements for display in web pages. A simple way to do this is by means of a script that picks an image at random each time it is invoked. The following Python script, banner.py, shows how to do this, where the ads are the flag images in the image table:

#!/usr/bin/python # banner.py - serve randomly chosen banner ad from image table # (sends no response if no image can be found) import MySQLdb import Cookbook conn = Cookbook.connect () stmt = "SELECT type, data FROM image ORDER BY RAND() LIMIT 1" cursor = conn.cursor () cursor.execute (stmt) row = cursor.fetchone () cursor.close () if row is not None: (type, data) = row # Send image to client, preceded by Content-Type: and # Content-Length: headers. The Expires:, Cache-Control:, and # Pragma: headers help keep browsers from caching the image # and reusing it for successive requests for this script. print "Content-Type: %s" % type print "Content-Length: %s" % len (data) print "Expires: Sat, 01 Jan 2000 00:00:00 ...

Get MySQL Cookbook, 2nd Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.