Latest posts on sqlalchemy ругается на занк "%" в строке запроса topichttps://python.su/forum/topic/1336/2008-05-12T13:18:11+03:00Общий :: Базы данных :: sqlalchemy ругается на занк "%" в строке запроса
2008-05-12T13:18:11+03:00Naota12947Можно сделать чтото типа такого:<br/><div class="code"><pre><span class="kn">from</span> <span class="nn">sqlalchemy.sql</span> <span class="kn">import</span> <span class="n">select</span>
<span class="kn">from</span> <span class="nn">sqlalchemy</span> <span class="kn">import</span> <span class="n">text</span>
<span class="n">select</span><span class="p">([</span><span class="n">table_name</span><span class="o">.</span><span class="n">c</span><span class="o">.</span><span class="n">id</span><span class="p">],</span> <span class="n">text</span><span class="p">(</span><span class="s">"BINARY </span><span class="si">%s</span><span class="s">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">test_table</span><span class="o">.</span><span class="n">c</span><span class="o">.</span><span class="n">url</span><span class="o">==</span><span class="n">some_string</span><span class="p">)))</span>
</pre></div>Или так к примеру:<br/><div class="code"><pre><span class="o">>>></span> <span class="kn">from</span> <span class="nn">sqlalchemy.sql</span> <span class="kn">import</span> <span class="n">text</span>
<span class="o">>>></span> <span class="n">s</span> <span class="o">=</span> <span class="n">text</span><span class="p">(</span><span class="s">"""SELECT users.fullname || ', ' || addresses.email_address AS title </span>
<span class="s">... FROM users, addresses </span>
<span class="s">... WHERE users.id = addresses.user_id AND users.name BETWEEN :x AND :y AND </span>
<span class="s">... (addresses.email_address LIKE :e1 OR addresses.email_address LIKE :e2)</span>
<span class="s">... """</span><span class="p">)</span>
<span class="n">sql</span><span class="o">>>></span> <span class="k">print</span> <span class="n">conn</span><span class="o">.</span><span class="n">execute</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="n">x</span><span class="o">=</span><span class="s">'m'</span><span class="p">,</span> <span class="n">y</span><span class="o">=</span><span class="s">'z'</span><span class="p">,</span> <span class="n">e1</span><span class="o">=</span><span class="s">'%@aol.com'</span><span class="p">,</span> <span class="n">e2</span><span class="o">=</span><span class="s">'%@msn.com'</span><span class="p">)</span><span class="o">.</span><span class="n">fetchall</span><span class="p">()</span>
</pre></div>
Общий :: Базы данных :: sqlalchemy ругается на занк "%" в строке запроса
2008-01-25T17:08:55+02:00Vach10711<blockquote><em>FoxPython</em><br/><strong>slav0nic</strong><br/>А мне на этом же форуме так делать и посоветовали.<br/><br/>r - для чего? Что она делает?</blockquote><div class="code"><pre>>>> print 'line1\nline2'<br/>line1<br/>line2<br/><br/>>>> print r'line1\nline2'<br/>line1\nline2</pre></div>
Общий :: Базы данных :: sqlalchemy ругается на занк "%" в строке запроса
2007-12-30T18:10:31+02:00FoxPython10191<strong>slav0nic</strong><br/>А мне на этом же форуме так делать и посоветовали.<br/><br/>r - для чего? Что она делает?
Общий :: Базы данных :: sqlalchemy ругается на занк "%" в строке запроса
2007-12-26T17:07:53+02:00slav0nic10132пиши через запятую<br/>db.execute( r'SELECT ID FROM %s WHERE BINARY URL = “%s”;', (table_name,some_string) )<br/>работать с запросами как со строками - глупо и небезопасно
Общий :: Базы данных :: sqlalchemy ругается на занк "%" в строке запроса
2007-12-26T14:23:25+02:00FoxPython10131А если попробовать вытащить текст sql-запроса в отдельную текстовую переменную, а потом уже подсовывать её execute'у?<br/>Типа: querry=“SELECT ID FROM %s WHERE BINARY URL = %s” %(table_name, some_string)<br/>db.execute(querry)<br/><br/>Кстати, возможно вторую %s следует заменить на ? (знак вопроса), а some_string убрать из текстовой строки и добавить в качестве параметра к execute'у, т.е.:<br/>querry=“SELECT ID FROM %s WHERE BINARY URL = ?” %(table_name)<br/>db.execute(querry, some_string)
Общий :: Базы данных :: sqlalchemy ругается на занк "%" в строке запроса
2007-10-11T16:25:32+03:00wNomad8541Спасибо за совет. Но text() не помогает. Все равно db.execute( text(“%s”) ) приводит к TypeError. :(<br/><br/><blockquote>Только несколько непрофильное использоввание - через алхимию raw запросы гонять</blockquote>Да, конечно. Везде в скрипте я использую доступ через функции sqlalchemy и методы класса Table. (без orm). Но не смог найти, как задать BINARY в условии WHERE, поэтому и пытаюсь через текстовый запрос.<br/>Может быть, Вы знаете как задать BINARY?
Общий :: Базы данных :: sqlalchemy ругается на занк "%" в строке запроса
2007-10-11T14:42:33+03:00Андрей Светлов8536Если говорим именно об sqlalchemy - попробуц переделать на<br/><div class="code"><pre>db.execute( text(r'SELECT ID FROM %s WHERE BINARY URL = "%s";' %(table_name,some_string)) )</pre></div>db создавал через create_engine<br/><br/>Только несколько непрофильное использоввание - через алхимию raw запросы гонять
Общий :: Базы данных :: sqlalchemy ругается на занк "%" в строке запроса
2007-10-11T14:14:25+03:00wNomad8535Привет всем :)<br/><br/>Вот нужно выполнить элементарный запрос к базе MySQL:<br/><div class="code"><pre>db.execute( r'SELECT ID FROM %s WHERE BINARY URL = "%s";' %(table_name,some_string) )</pre></div>db создавал через create_engine<br/><br/>И если в some_string встречается “%”, вылетает ошибка: (TypeError) not enough arguments for format string<br/><br/>Перерыл уже все что мог, не понимаю, зачем execute воспринимает эту строку, как строку с параметрами, и как указать ему, что это просто строка? Даже если задать просто db.execute( “%s” ) все равно вылетит этот TypeError, а не SyntaxError от MySQL сервера.<br/><br/>Буду признателен за любую помощь.