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