----- Forwarded message from Andy Dustman <[EMAIL PROTECTED]> -----
Date: Tue, 22 Mar 2005 11:28:35 -0500
From: Andy Dustman <[EMAIL PROTECTED]>
Subject: Re: [EMAIL PROTECTED]: Bug#300324: python-mysqldb: Python True is
mysql false when inserting]
To: Jonas Meurer <[EMAIL PROTECTED]>
It's a valid point, although the fix is simpler than he thinks:
MySQLdb.converters.conversions[bool] = int
No need for the lambda.
I'll fix in the next release. It's a very easy fix in the above sub-module.
Jonas Meurer wrote:
>hi andy,
>
>i forward this bugreport to you, as i don't have time for debugging
>these days. i write my abitur these days. i'll have a further look in
>about one, two weeks.
>
>bye
> jonas
>
>ps: there is a second bugreport, it's about InnoDB, i'll forward it too.
>
>
>----- Forwarded message from Tim Freeman <[EMAIL PROTECTED]> -----
>
>Date: Fri, 18 Mar 2005 15:53:12 -0700
>From: Tim Freeman <[EMAIL PROTECTED]>
>From-Tims-Fingers: true
>Subject: Bug#300324: python-mysqldb: Python True is mysql false when
>inserting
>To: [EMAIL PROTECTED]
>Reply-To: Tim Freeman <[EMAIL PROTECTED]>, [EMAIL PROTECTED]
>
>Package: python-mysqldb
>Version: 1.1.6-1
>Severity: normal
>
>*** Please type your report below this line ***
>Using python2.3-mysqldb against mysql-server 4.1.9-2, I can run this program
>
> import MySQLdb
> import MySQLdb.converters
> _conversions = MySQLdb.converters.conversions.copy()
> # To make the bug go away, comment in the next line.
> #_conversions[bool] = lambda x, d: int(x)
> conn = MySQLdb.connect(host='x', user='x', passwd='x', db='x',
> conv = _conversions)
> cursor = conn.cursor()
> cursor.execute("drop table if exists foo");
> cursor.execute("create table foo (x boolean)");
> # Inserting a print statement strategically into the MySQLdb package
> shows
> # that the next execute does this mysql:
> # insert into foo(x) values ('True');
> # which, when I do it directly from the mysql command line, inserts a 0
> into
> # foo, not a 1.
> cursor.execute("insert into foo (x) values (%s)", (True,))
> cursor.execute("select * from foo")
> (value,) = cursor.fetchone()
> print "Value is %r" % (value,) # prints 0, should print True or 1.
> assert value
>
>and it hits the assert because inserting True inserts a 0 into the database.
>There's a workaround commented out at the top of the script.
>
>-- System Information:
>Debian Release: 3.1
> APT prefers testing
> APT policy: (700, 'testing')
>Architecture: i386 (i686)
>Kernel: Linux 2.6.8-1-386
>Locale: LANG=C, LC_CTYPE=C (charmap=ANSI_X3.4-1968)
>
>Versions of packages python-mysqldb depends on:
>ii python 2.3.4-5 An interactive high-level
>object-o
>ii python2.3-mysqldb 1.1.6-1 A Python interface to MySQL
>
>-- no debconf information
>
>
>----- End forwarded message -----
----- End forwarded message -----
--
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]