MySQLDB - parameterised SQL - "TypeError: not all arguments converted during string formatting"

shearichard at gmail.com shearichard at gmail.com
Sun Feb 19 19:26:15 EST 2006


Hi - I have written some python to insert a row into a table using
MySQLDB. I have never before written SQL/Python using embedded
parameters in the SQL and I'm having some difficulties. Could someone
point me in the right direction please ?

The python looks like this :

import MySQLdb
import MySQLdb.cursors
conn = MySQLdb.Connect(host='localhost', user='abc,passwd='def',
db='ghi',compress=1)

cursor = conn.cursor(cursorclass=MySQLdb.cursors.DictCursor)
sqlQuery = "INSERT INTO EVA_COMPANY
(COM_ADDRESS,COM_AUTOID,COM_COMPANY_ADDRESS,COM_STRUCT_OWNER_CODE)
VALUES (?,?,?,?) "
print sqlQuery
sql = cursor.execute(sqlQuery,("test","NULL","Tester1017",5))
cursor.close()
conn.commit()

... and the table looks like this ...

CREATE TABLE `eva_company` (
  `COM_AUTOID` int(9) unsigned NOT NULL auto_increment,
  `COM_COMPANY_NAME` varchar(128) NOT NULL,
  `COM_TRADING_NAME` varchar(128) default NULL,
  `COM_ADDRESS` varchar(256) NOT NULL,
  `COM_POSTAL_ADDRESS` varchar(256) default NULL,
  `COM_CONTACT_NAME` varchar(56) default NULL,
  `COM_CONTACT_POSITION` varchar(56) default NULL,
  `COM_CONTACT_TELEPHONE` varchar(16) default NULL,
  `COM_CONTACT_FAX` varchar(16) default NULL,
  `COM_CONTACT_EMAIL` varchar(256) default NULL,
  `COM_STRUCT_OWNER_CODE` int(9) unsigned default NULL,
  `COM_INDUSTRY_CODE` varchar(16) default NULL,
  `COM_INDUSTRY_DESC` varchar(56) default NULL,
  `COM_NUMBER_OF_SITES` int(9) default NULL,
  `COM_NATURE_OF_RELATIONSHIP` varchar(128) default NULL,
  PRIMARY KEY  (`COM_AUTOID`),
  KEY `IDX_COM1` (`COM_STRUCT_OWNER_CODE`),
  KEY `IDX_COM0` (`COM_COMPANY_NAME`),
  CONSTRAINT `FK_COS_COM0` FOREIGN KEY (`COM_STRUCT_OWNER_CODE`)
REFERENCES `eva_code_comp_struct_ownership` (`COS_AUTOID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;

... but when I try to execute the python I get an error ...

Traceback (most recent call last):
  File "sheadbtest1.py", line 8, in ?
    sql = cursor.execute(sqlQuery,("test","NULL","Tester1017",5))
  File
"C:\bin\installed\Python2.4.1\Lib\site-packages\MySQLdb\cursors.py",
line 132, in execute
    self.errorhandler(self, TypeError, m)
  File
"C:\bin\installed\Python2.4.1\Lib\site-packages\MySQLdb\connections.py",
line 33, in defaulterrorhandler
    raise errorclass, errorvalue
TypeError: not all arguments converted during string formatting

... as I say if anyone could provide me with some tips I'd appreciate
it.

thanks

richard shea.




More information about the Python-list mailing list