Форум сайта python.su
Задача - получить случайную запись из базы данных
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
В результате получается путаница с ячейками, запрашивается одно, а получается разное.
Офлайн
А не проще средствами субд это сделать?
select * from table order by rand() limit 1;
Офлайн
Через мускульный клиент результат правильный, через python рельтат неправильный
Отредактировано (Апрель 15, 2007 22:57:07)
Офлайн
проблема решена, ошибка была не в функции а в запросе к ней
вызов был таков
x1= get_random()
x2 = get_random()
а правильно
rand = get_random()
x1 = rand
x2 = rand
пошел убиваться о стенку…
Офлайн