MySQLdb: getting inserted data

Gerhard Häring gh at ghaering.de
Tue Apr 15 17:42:00 EDT 2003


* Mirko Koenig <koenig at v-i-t.de> [2003-04-15 22:31 +0200]:
> Hi
> 
> I want to insert a new empty row into my table and get the value of the
> primary key, so that i can identify it. [...]

Use the .lastrowid property of the cursor object. It's an optional
DB-API extension that MySQLdb implements. E. g.:

# cx is the connection object
cu = cx.cursor()
name = "Alice"
cu.execute("INSERT INTO PERSON(PERS_NAME) VALUES (%s)", (name,))

title = "Macbeth"
# BK_OWNER is the foreign key that refers to the PERSON table:
cu.execute("INSERT INTO BOOKS(BK_TITLE, BK_OWNER) VALUES (%s, %i)",
        (title, cu.lastrowid))
cx.commit()     # These two INSERTs are atomic

HTH,

Gerhard
-- 
mail:   gh at ghaering.de
web:    http://ghaering.de/





More information about the Python-list mailing list