
ethan at stoneleaf
Jul 15, 2008, 11:11 AM
Post #3 of 6
(205 views)
Permalink
|
maestroQC wrote: > Hi, > > Its one of those days. I cannot solve this. Any help would be greatly > appreciated! > When I execute this: > > class Db(object): > def insertAccount(self, date, accountNumber, description, > openingBalance): > dec = decimal.Decimal(openingBalance) > db = MySQLdb.connect(host="localhost", user="dumb", > passwd="dumber", db="rdc") > cursor = db.cursor() > cursor.execute("INSERT INTO es_accounts (dateCreated, > accountNumber, description, openingBalance) VALUES (%s, %s, %s, %d)", > (date, accountNumber, description, dec)) > > I get this error: > Traceback (most recent call last): > File "main.py", line 59, in <module> > main() > File "main.py", line 40, in main > dbObj.insertAccount(dateTo, item[0], item[1], item[8]) > File "C:\projects\workspace\INYR_ES_0.1\src\db.py", line 19, in > insertAccount > cursor.execute("INSERT INTO es_accounts (dateCreated, > accountNumber, description, openingBalance) VALUES (%s, %s, %s > , %d)", (date, accountNumber, description, dec)) > File "c:\python25\lib\site-packages\MySQLdb\cursors.py", line 151, > in execute > query = query % db.literal(args) > TypeError: int argument required > > My table is defined as: > CREATE TABLE es_accounts ( > id int(6) not null auto_increment, > dateCreated date DEFAULT '0000-00-00', > accountNumber int(6) not null, > description varchar(255) not null, > openingBalance decimal(15,8) NOT NULL DEFAULT 0.00000000, > primary key (id) > ); > > TIA The problem is your %d in Values, and then using a Decimal type to feed it. Depending on the type of your openingBalance field, you may want to change the %d to %s, or change dec to int(dec), or change the %d to %f and change dec to float(dec). My experience with the Decimal type is limited, so there may be other options as well. ~Ethan -- http://mail.python.org/mailman/listinfo/python-list
|