Найти - Пользователи
Полная версия: Оператор LIKE Mysql
Начало » Базы данных » Оператор LIKE Mysql
1
tibs
Как выполнить запрос из 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
Lexander
Так вы параметр name в запрос не передали, вот и ошибка.
tibs
Lexander
Так вы параметр name в запрос не передали, вот и ошибка.
Ошибся с копированием кода. Параметр я конечно же передавал.
dorian
name = "%{0}%".format('bla-bla')
cursor.execute("""SELECT id, name FROM users WHERE name LIKE %s""", name)
tibs
Решил таким образом:
    name = request.GET.get('name', '').lower()
    cursor = connections['mydb'].cursor()
    query1 = "SELECT id, name FROM users WHERE name LIKE %s"
    cursor.execute(query1, '%' + name + '%')
tibs
Странно, но строчка
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
Решено таким образом:

cursor.execute(query1, ('%'+name+'%', ))
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB