[Tutor] MySQL mangling & list subscription question

Danny Yoo dyoo@hkn.eecs.berkeley.edu
Fri, 3 Aug 2001 13:48:45 -0700 (PDT)


On Fri, 3 Aug 2001, Rob Andrews wrote:

> # Rob we are trying to display the customer information in a form.
> #
> # 1. How do we pull specific customer records from the data base
> #
> # 2. assign the data to a variable
> #
> # 3. display the variable in the form and change the variable
> # in the record.
> #

First things first: your friend will need to download a database module
for MySQL.  You can direct your friend here;

    http://python.org/topics/database/modules.html

for a list of the popular ones.  There's a very good one for MySQL called
MySQLdb, which can be found from sourceforge.net here:

http://sourceforge.net/project/showfiles.php?group_id=22307&release_id=37980

Doing SQL queries in Python is fairly regular between all the database
modules --- first, you'll want to get a connection, the object that will
let us talk to the database.  We can imagine that it will look like this:

###
import MySQLdb

connection = MySQLdb.connect(user="bilbo", passwd="elbereth",
                             db="The Red Book")
###


Once we have this connection, we can grab a "cursor" from the connection
that will let us execute queries:

###
cursor = connection.cursor()
###


What sort of thing might we want to know about?  Perhaps we're looking for
all the names in a merry band of thieves raiding a dragon's den.  What we
want to do is tell Python to start up the search:

###
cursor.execute("""select name, email from addressbook
                  where height < 3""")
###

But it's not enough to tell it to do the search... we also want it to give
us back the results!  We have several options here: we can pull them out,
one at a time:

###
name, email = cursor.fetchone()
###

or we can do it all at once:

###
thief_information = cursor.fetchall()
###


I have NOT been able to test this code though, so I might have made a
mistake somewhere.  It's probably a good idea to refer your friend to the
"Python Database API v2.0", which is very dry, but at least it's
authoritative about what functions can be called:

    http://python.org/topics/database/DatabaseAPI-2.0.html


The other question about changing values in the database is an
SQL-specific one: ask your friend to take a look at:

    http://devshed.com/Server_Side/MySQL/Intro

so that they can get a brief overview on how do do SQL queries that do
"UPDATE"'s and "INSERT"'s.  I think UPDATE is what your friend will need
to change values in the database.  Have them practice on a throw-away
database first though: SQL makes it really easy to do something silly like
"DELETE FROM IMPORTANT_CRITICAL_DATA" without any warnings.

Feel free to ask more questions about this.  Hope this helps!