2012-06-13 6 views
0

У меня есть форма PHP, который сохраняет эти значения в базе данных:Python данные MySQLDb

  • ид
  • рандов (случайно сгенерированных строка)
  • x_val
  • y_val

Я вызываю эти значения из базы данных в программе python, используя mysqldb:

import MySQLdb 

db = MySQLdb.connect("localhost","root","","test") 

cursor = db.cursor() 

sql = "SELECT id,rand,x_val,y_val FROM table" 
try: 
cursor.execute(sql) 
results = cursor.fetchall() 
results = {} 
for row in results: 
    results[row[1]] = [row[0], row[2], row[3]] 
    rand = row[1] 
    x_val = row[2] 
    y_val = row[3] 

except: 
print "Error: unable to fecth data" 

db.close() 

UPDATE: Это дает ошибку -> Ошибка: не удалось fecth данные

В этой части (как вы можете видеть) я хочу рандов (т.е. строка [1]), чтобы служить идентификатором строки. Тем не менее, я не могу найти способ использования этого как идентификатора, поскольку rand = row [1] вызывается после переменной sql. В этом примере я использовал статическое значение «63kfjf» rand, которое просто показывает вам работу. Есть ли способ?

+0

Не могли бы вы уточнить? Зачем вам нужна случайная строка? Почему бы не сделать rand «целочисленным автоматическим приращением»? – JustinDanielson

+0

Мне нужен он для обработки как уникальный идентификатор строки в программе python ... не нужно, чтобы это был идентификатор. – khan

+0

Установите значение «integer auto increment», вы получите строку чисел, которые не имеют совпадений. Вам не нужно использовать его в качестве ключа. – JustinDanielson

ответ

1

После выбора ДАННЫЕ из БД, вы можете создать dictionnary с «ранда» значение как ключ:

Что-то вроде этого:

dicResults = {} 
for row in results: 
    dicResults[row[1]] = [row[0], row[2], row[3]] 
+0

Получил это. Получил это через ваш метод ... отлично работает. – khan

+0

Добро пожаловать. – Akarun

+3

@Akarun: вы должны быть читателем ума – mhawke

0

Я думаю, что вы пытаетесь случайно выбрать строку ? Если это правильно, это сработает.

  1. Измените rand на число с автоматическим добавочным числом.

  2. SELECT MAX (rand) FROM table; для определения наивысшего «случайного» значения .

  3. Генерировать случайное значение между 0 и MAX (RAND)

  4. SELECT * из таблицы, где рандов = $ randomGeneratedValue;

+0

rand генерируется из скрипта php, и это просто уникальный случайный код, который поступает из полей ввода формы. Таким образом, он всегда уникален, поэтому я хочу, чтобы это служило идентификатором, который может быть дополнительно обработан в скрипте python. Кроме того, размещение rand = $ randomGeneratedValue может ничего не делать, потому что этот скрипт python не имеет связи с переменной php. Здесь работают два разных сценария. Один отправляет данные, а другой извлекает их. : / – khan