MySQLdb: execute query results...
sheila at spamcop.net
Mon Sep 1 01:57:07 CEST 2003
I have searched for an answer to this question on the comp.lang.python
archives at Google Groups, and also looked through the (sparse) MySQLdb
documentation, and cannot confirm for a FACT what I think I know.
Looking for affirmation before I go "assuming" something and getting myself
into trouble somewhere along the line...
Here is what I *think* I know...let me know if I'm wrong, for crying out
If I do something like:
>>> db = MySQLdb.connect(passwd="mypass", host="localhost",
... db="mydb", user="myusername")
>>> c = db.cursor()
and then later do:
>>> result = c.execute("""<some proper MySQL query here>""")
doesn't result always return the number of affected rows?
As a more concrete example:
I made the following table:
mysql> CREATE TABLE example(
-> name VARCHAR(14),
-> AGE INT,
-> COUNTRY VARCHAR(15));
Query OK, 0 rows affected (0.03 sec)
And then in Python did the following INSERTS and UPDATE:
>>> c.execute("""INSERT INTO example (name, AGE, COUNTRY) VALUES ("sheila", 29, "US");""")
>>> c.execute("""INSERT INTO example (name, AGE, COUNTRY) VALUES ("arthur", 23, "NL");""")
>>> c.execute("""INSERT INTO example (name, AGE, COUNTRY) VALUES ("bob", 29, "US");""")
>>> result = c.execute("""UPDATE example SET AGE=30 WHERE AGE=29;""")
Can I *RELY* on that "2L" result of the UPDATE statement under the cursor's
"execute" method representing the number of rows updated? Or am I assuming
Like I say, I looked through several sources, including my O'Reilly MySQL
book and cannot verify this for a fact from docs.
I did find this, however:
"UPDATE returns the number of rows that were actually changed. In MySQL
Version 3.22 or later, the C API function mysql_info() returns the number
of rows that were matched and updated and the number of warnings that
occurred during the UPDATE. "
Which seems to corroborate, although they are not referring to the Python
Thanks for any clarification on this matter,
More information about the Python-list