<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recent changes to 331: SELECT IN a list with only one element</title><link>https://sourceforge.net/p/mysql-python/bugs/331/</link><description>Recent changes to 331: SELECT IN a list with only one element</description><atom:link href="https://sourceforge.net/p/mysql-python/bugs/331/feed.rss" rel="self"/><language>en</language><lastBuildDate>Wed, 29 Mar 2017 11:31:55 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/mysql-python/bugs/331/feed.rss" rel="self" type="application/rss+xml"/><item><title>#331 SELECT IN a list with only one element</title><link>https://sourceforge.net/p/mysql-python/bugs/331/?limit=25#e9c0</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;A correct solution would be&lt;/p&gt;
&lt;p&gt;if isinstance(args, dict):&lt;br/&gt;
    query = query % {key: db.literal(item) for key, item in args.iteritems()}&lt;br/&gt;
elif isinstance(args, tupel):&lt;br/&gt;
    query = query % tuple(&lt;span&gt;[db.literal(item) for item in args]&lt;/span&gt;)&lt;br/&gt;
else:&lt;br/&gt;
     query % db.literal(args)&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robert Penz</dc:creator><pubDate>Wed, 29 Mar 2017 11:31:55 -0000</pubDate><guid isPermaLink="false">https://sourceforge.net5145add72cfb399aaf37918a7e6fd30b8ac1136e</guid></item><item><title>#331 SELECT IN a list with only one element</title><link>https://sourceforge.net/p/mysql-python/bugs/331/?limit=25#b081</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;This patch breaks stuff that worked with the previous version of mysql-python&lt;/p&gt;
&lt;p&gt;eg.&lt;/p&gt;
&lt;p&gt;cursor.execute("SELECT %s ...), (aString))&lt;/p&gt;
&lt;p&gt;TypeError: not all arguments converted during string formatting&lt;/p&gt;
&lt;p&gt;or&lt;/p&gt;
&lt;p&gt;cursor.execute("SELECT %s ...), aString)&lt;/p&gt;
&lt;p&gt;TypeError: not all arguments converted during string formatting&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robert Penz</dc:creator><pubDate>Wed, 29 Mar 2017 10:21:34 -0000</pubDate><guid isPermaLink="false">https://sourceforge.net3b41a5ef19d5d0c2231b8c8618daa3f9c7d99812</guid></item><item><title>SELECT IN a list with only one element</title><link>https://sourceforge.net/p/mysql-python/bugs/331/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;I found a bug when running this bit of code in a Python console (Python 2.7.3). The point here is that I want to be able to select "in" a list, even when said list has only one element.&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="n"&gt;import&lt;/span&gt; &lt;span class="n"&gt;MySQLdb&lt;/span&gt;

&lt;span class="n"&gt;db&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;MySQLdb&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;connect&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;&lt;span class="n"&gt;user&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="c"&gt;%%%, passwd: %%%; db: %%%, host: %%%, port: %%%})&lt;/span&gt;
&lt;span class="n"&gt;cursor&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;db&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;cursor&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;query&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &amp;quot;&amp;quot;&amp;quot;&lt;span class="n"&gt;SELECT&lt;/span&gt; 1 &lt;span class="n"&gt;in&lt;/span&gt; &lt;span class="c"&gt;%s&amp;quot;&amp;quot;&amp;quot;&lt;/span&gt;

&lt;span class="n"&gt;list_one&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;1&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="n"&gt;list_two&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;1&lt;span class="p"&gt;,&lt;/span&gt; 2&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="k"&gt;try&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;cursor&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;execute&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;query&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;list_one&lt;/span&gt;&lt;span class="p"&gt;,))&lt;/span&gt;
    &lt;span class="n"&gt;print&lt;/span&gt; &amp;quot;&lt;span class="n"&gt;Query&lt;/span&gt; &lt;span class="n"&gt;ok&lt;/span&gt; &lt;span class="n"&gt;with&lt;/span&gt; &lt;span class="c"&gt;%s.&amp;quot; % list_one&lt;/span&gt;
&lt;span class="n"&gt;except&lt;/span&gt; &lt;span class="n"&gt;Exception&lt;/span&gt; &lt;span class="n"&gt;as&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;print&lt;/span&gt; &amp;quot;&lt;span class="n"&gt;Query&lt;/span&gt; &lt;span class="n"&gt;not&lt;/span&gt; &lt;span class="n"&gt;ok&lt;/span&gt; &lt;span class="n"&gt;with&lt;/span&gt; &lt;span class="c"&gt;%s with exception %s.&amp;quot; % (list_one, str(e))&lt;/span&gt;

&lt;span class="k"&gt;try&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;cursor&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;execute&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;query&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;list_two&lt;/span&gt;&lt;span class="p"&gt;,))&lt;/span&gt;
    &lt;span class="n"&gt;print&lt;/span&gt; &amp;quot;&lt;span class="n"&gt;Query&lt;/span&gt; &lt;span class="n"&gt;ok&lt;/span&gt; &lt;span class="n"&gt;with&lt;/span&gt; &lt;span class="c"&gt;%s.&amp;quot; % list_two&lt;/span&gt;
&lt;span class="n"&gt;except&lt;/span&gt; &lt;span class="n"&gt;Exception&lt;/span&gt; &lt;span class="n"&gt;as&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;print&lt;/span&gt; &amp;quot;&lt;span class="n"&gt;Query&lt;/span&gt; &lt;span class="n"&gt;not&lt;/span&gt; &lt;span class="n"&gt;ok&lt;/span&gt; &lt;span class="n"&gt;with&lt;/span&gt; &lt;span class="c"&gt;%s with exception %s.&amp;quot; % (list_two, str(e))&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;A fix for this would be in cursor.py (line 159)&lt;/p&gt;
&lt;p&gt;current:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="n"&gt;query&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;query&lt;/span&gt; &lt;span class="c"&gt;% db.literal(args)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;fix:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;isinstance&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;dict&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;query&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;query&lt;/span&gt; &lt;span class="c"&gt;% {key: db.literal(item) for key, item in args.iteritems()}&lt;/span&gt;
&lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;query&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;query&lt;/span&gt; &lt;span class="c"&gt;% tuple([db.literal(item) for item in args])&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Or am I missing a possible alternative syntax ?&lt;/p&gt;
&lt;p&gt;Thanks a lot for your time!&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">T.L.</dc:creator><pubDate>Tue, 23 Apr 2013 12:08:20 -0000</pubDate><guid isPermaLink="false">https://sourceforge.net10d7f335a408e1c38360d6b9a5a0db95251ed789</guid></item></channel></rss>