Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> TypeError: cannot concatenate 
:(
    Опции темы
Sergey912
Дата 7.4.2007, 04:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 174
Регистрация: 3.1.2007

Репутация: нет
Всего: нет



Код

Traceback (most recent call last):
  File "D:\se\a.py", line 15, in <module>
    cursorL.execute("""SELECT id FROM _base WHERE text LIKE '%"""+substr_a+"""%' AND id <> """+row[0])
TypeError: cannot concatenate 'str' and 'long' objects
>>> 


Вот такая ошибка. substr_a - это строка обыкновенная, а row[0] это число, вот только непонятно что и с чем он не может объеденить и почему? Строку проверял, нормальный str, пробовал отдельно т.е. только на id проверять и только на LIKE в самом запросе.  В итоге получается одно и то же: "cannot concatenate". Первый раз вижу такую ошибку  smile 

Это сообщение отредактировал(а) Sergey912 - 7.4.2007, 05:04
PM MAIL WWW   Вверх
setq
Дата 7.4.2007, 08:00 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Ну да. Ошибку выдаёт операция сложения: питон не преобразует автоматически числа к строкам, и строки к числам. Необходимо сделать это вручную: YourString + str(YourNumber) или использовать операцию форматирования.

Пожалуй я не могу считаться экспертом в этом вопросе, но всё же если метод execute() поддерживает подстановку параметров, то лучше пользоваться этой фичей.
  Вверх
kulibinka
Дата 7.4.2007, 13:41 (ссылка) |   (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 191
Регистрация: 20.11.2006

Репутация: 2
Всего: 4



ага, вместо "+row[0]" делай "+str(row[0])"
PM MAIL   Вверх
sir_Jack
Дата 11.4.2007, 19:17 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 15.1.2007

Репутация: 3
Всего: 4



если параметров много я предпочитаю делать так:

Код

a = 'string - %s, dec - %d, float - %.3f' % ('hello', 15,1)


вроде нигде не ошибся
очень удобно при создании запросов к БД.. в sql забиваем все переменные в нужном формате и выполняем smile
Но это - на любителя
PM MAIL   Вверх
Void
Дата 11.4.2007, 19:30 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 10
Всего: 173



Цитата(sir_Jack @  11.4.2007,  21:17 Найти цитируемый пост)
очень удобно при создании запросов к БД.. в sql забиваем все переменные в нужном формате и выполняем

Прямая дорога к SQL injection.

В DB-API 2 есть механизм параметров, им и надо пользоваться.


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Python: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1116 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.