Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 21, 2012 22:18:32

belodemon
От:
Зарегистрирован: 2011-01-12
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

взаимодействие с базой mysql

Доброго времени!
Версия интерпритатора: Python 2.6.6 (r266:84292, Dec 27 2010, 00:02:40) Платформа Linux.
Я новичок поэтому вопрос думаю будет не сложным для присутствующих )

Пробую делать простой селект с базы (mysqldb 5.1) , самый простой, вида:

cursor.execute(“SELECT %s FROM %s”, (r_users, r_table))
results = cursor.fetchall()

получаю ошибку
“You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘'resellers’' at line 1”)

второе что не очень то получается без дополнительных костылей, если я делаю явный селект в лоб вида:

cursor.execute(“SELECT name_user FROM users”)
results = cursor.fetchall()
получаю лист (масив) вида ((user1,), (user2,), (user3,))
что для меня есть не очень гуд, т.к. необходимо этот список сравнить с другим списком, можно как то и это обойти? Тоесть получать эту выборку в список в стандартном виде .
Буду очень спасибо!



Отредактировано (Фев. 21, 2012 22:23:14)

Офлайн

#2 Фев. 22, 2012 03:35:52

lavrton
От:
Зарегистрирован: 2010-11-13
Сообщения: 35
Репутация: +  1  -
Профиль   Адрес электронной почты  

взаимодействие с базой mysql

check the manual that corresponds to your MySQL server version for the right syntax to use near ‘'resellers’' at line 1"
Те ли значения хранятся в r_users, r_table? Попробуйте сделать, чтобы явно увидеть sql запрос:
print "SELECT %s FROM %s"%(r_users, r_table)
Для получения “хорошего” массива воспользуйтесь следующей конструкцией:
results=[user for (user,) in cursor.fetchall()]



Офлайн

#3 Фев. 22, 2012 06:35:34

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

взаимодействие с базой mysql

belodemon
Пробую делать простой селект с базы (mysqldb 5.1) , самый простой, вида:

cursor.execute(“SELECT %s FROM %s”, (r_users, r_table))
results = cursor.fetchall()

получаю ошибку
“You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘'resellers’' at line 1”)
Потому что биндинг execute выполняет только для параметров запроса, например
cursor.execute(“SELECT id, name_user FROM users WHERE name_user = %s”, (name, ))
в вашем случае надо воспользоваться обычным форматированием строки
cursor.execute(“SELECT %s FROM %s” % (r_users, r_table))



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#4 Фев. 22, 2012 07:42:10

quantum
От:
Зарегистрирован: 2011-12-16
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

взаимодействие с базой mysql

Уважаемые! Огромное человеческое! Поправил:

cursor.execute(“SELECT %s FROM %s” % (r_users, r_table))
results =

Получаю полную красоту!



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version