Уведомления

Группа в Telegram: @pythonsu

#1 Май 15, 2013 16:00:59

tibs
От:
Зарегистрирован: 2011-06-30
Сообщения: 57
Репутация: +  0  -
Профиль   Отправить e-mail  

Оператор LIKE Mysql

Как выполнить запрос из Python 2.7 с оператором LIKE на БД Mysql.

Пробовал так:

    name = '%' + name + '%'
    query1 = "SELECT id, name FROM users WHERE name LIKE '%s'" % name
    cursor.execute(query1)

Вылетает ошибка:

“not enough arguments for format string”

Django version 1.4.3



Отредактировано tibs (Май 15, 2013 19:13:29)

Офлайн

#2 Май 15, 2013 17:10:44

Lexander
От:
Зарегистрирован: 2008-09-19
Сообщения: 1139
Репутация: +  33  -
Профиль   Отправить e-mail  

Оператор LIKE Mysql

Так вы параметр name в запрос не передали, вот и ошибка.



Офлайн

#3 Май 15, 2013 19:14:08

tibs
От:
Зарегистрирован: 2011-06-30
Сообщения: 57
Репутация: +  0  -
Профиль   Отправить e-mail  

Оператор LIKE Mysql

Lexander
Так вы параметр name в запрос не передали, вот и ошибка.
Ошибся с копированием кода. Параметр я конечно же передавал.



Офлайн

#4 Май 18, 2013 12:25:29

dorian
От:
Зарегистрирован: 2006-05-18
Сообщения: 79
Репутация: +  0  -
Профиль   Отправить e-mail  

Оператор LIKE Mysql

name = "%{0}%".format('bla-bla')
cursor.execute("""SELECT id, name FROM users WHERE name LIKE %s""", name)



Офлайн

#5 Май 20, 2013 17:59:35

tibs
От:
Зарегистрирован: 2011-06-30
Сообщения: 57
Репутация: +  0  -
Профиль   Отправить e-mail  

Оператор LIKE Mysql

Решил таким образом:

    name = request.GET.get('name', '').lower()
    cursor = connections['mydb'].cursor()
    query1 = "SELECT id, name FROM users WHERE name LIKE %s"
    cursor.execute(query1, '%' + name + '%')



Офлайн

#6 Июнь 4, 2013 19:30:23

tibs
От:
Зарегистрирован: 2011-06-30
Сообщения: 57
Репутация: +  0  -
Профиль   Отправить e-mail  

Оператор LIKE Mysql

Странно, но строчка

cursor.execute(query1, '%' + name + '%')
стала выдавать ошибки на машине:
Python 2.6.6 (r266:84292, Sep 11 2012, 08:28:27)
on linux2
Django version 1.3.1,


'unicode' object has no attribute 'items'
'str' object has no attribute 'items'

На другой машине все работает без ошибок:
Python 2.7.3 (default, Apr 10 2012, 23:31:26) on win32
Django version 1.4.3

Если я преобразовываю код так
    # gag
try:
cursor.execute(query1, '%' + name + '%')
except Exception, e:
print e
все выполняется отлично, но эксепшены все равно выдаются. В чем может быть проблема?



Отредактировано tibs (Июнь 4, 2013 19:30:47)

Офлайн

#7 Июнь 25, 2013 13:48:12

tibs
От:
Зарегистрирован: 2011-06-30
Сообщения: 57
Репутация: +  0  -
Профиль   Отправить e-mail  

Оператор LIKE Mysql

Решено таким образом:

cursor.execute(query1, ('%'+name+'%', ))



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version