Уведомления

Группа в Telegram: присоединиться | Jabber-конференция сообщества: pythonua@conference.jabber.ru

#1 Апрель 15, 2007 20:53:13

niro
От:
Зарегистрирован: 2006-10-04
Сообщения: 178
Репутация: +  0  -
Профиль   Отправить e-mail  

проблемы с mysql

Задача - получить случайную запись из базы данных

def get_random():
import MySQLdb,random
con = MySQLdb.connect(host = “localhost”,user = “root”,db = “db”)
cur = con.cursor()
cur.execute('select max(id) from table')
maxid = cur.fetchone()
sel = int(random.uniform(1,maxid+1))
cur.execute('set names utf8;')
cur.execute('select col,col1 from table where id=%s'%sel)
result = cur.fetchone()
cur.close()
con.close()
return result

В результате получается путаница с ячейками, запрашивается одно, а получается разное.



Офлайн

#2 Апрель 15, 2007 21:21:21

slivlen
От:
Зарегистрирован: 2006-07-06
Сообщения: 764
Репутация: +  0  -
Профиль   Отправить e-mail  

проблемы с mysql

А не проще средствами субд это сделать?

 select * from table order by rand() limit 1;



Офлайн

#3 Апрель 15, 2007 22:56:26

niro
От:
Зарегистрирован: 2006-10-04
Сообщения: 178
Репутация: +  0  -
Профиль   Отправить e-mail  

проблемы с mysql

Через мускульный клиент результат правильный, через python рельтат неправильный



Отредактировано (Апрель 15, 2007 22:57:07)

Офлайн

#4 Апрель 16, 2007 10:35:08

niro
От:
Зарегистрирован: 2006-10-04
Сообщения: 178
Репутация: +  0  -
Профиль   Отправить e-mail  

проблемы с mysql

проблема решена, ошибка была не в функции а в запросе к ней
вызов был таков

x1= get_random()
x2 = get_random()

а правильно
rand = get_random()
x1 = rand
x2 = rand

пошел убиваться о стенку…



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version