[Tutor] Get variable values

Danny Yoo dyoo at hkn.eecs.berkeley.edu
Thu Feb 1 19:35:38 CET 2007



>> Wait, wait, before we continue here: did you finally get things working 
>> from your last question?
>
> Yes, i got things working. That was just a test for python-MySQldb.

Hi Mario,

Ok, good.  Next time, make it more clear to the group that things worked 
out fine, to close the thread.  Remember, we can't read your mind: make it 
explicit.

Otherwise, people will continue to try to help you with something that you 
don't have problems with anymore.  *grin*



>                     db = MySQLdb.connect(host="localhost", 
> user="planet", passwd="secret", db="planet_geek")
>                     cursor = db.cursor()
>
>                     cursor.execute("INSERT INTO blog_posts (title)
> VALUES ('entry[key].url')")
>
> This isn't working.
> It inserts nothing in the database.


There are two things you need to consider:

    1.  "Autocommit" mode is off.  That is, by default, your database 
access is transactioned.  That means that if you don't commit, the 
database rolls any changes right back out as soon as the connection 
closes.  See:

     http://www.amk.ca/python/writing/DB-API.html


    2.  String literals are really string literals.  That is, the code as 
written above will insert the literal string "entry[key].url" as a title.

Use prepared statements.  See:

     http://mail.python.org/pipermail/tutor/2003-April/022010.html

for an example.


There's also a third thing I'd suggest: abstract our the database-creation 
into a separate function.  You're probably going to be opening connections 
in several places in your code: keep the connection-open logic in a single 
place so you can more easily change configurations.

If it's possible, pull out the code that touches the database into a 
separate module layer.  People on the list can talk about this more if 
you'd like.

If you have more questions, please free to ask.


More information about the Tutor mailing list