2013-06-14 6 views
1

У меня есть таблица под названием coords и определяется как:Использование MySQLDb для возврата значений - Python

mysql> describe coords; 
+-----------+--------------+------+-----+------------------+----------------+ 
| Field  | Type   | Null | Key | Default   | Extra   | 
+-----------+--------------+------+-----+------------------+----------------+ 
| id  | int(11)  | NO | PRI | NULL    | auto_increment | 
| location | varchar(150) | NO | UNI | NULL    |    | 
| latitude | float(20,14) | YES |  | 0.00000000000000 |    | 
| longitude | float(20,14) | YES |  | 0.00000000000000 |    | 
----------------------------------------------------------------------------- 

Я использую MySQLdb импорта в моем сценарии Python. Цель этой таблицы - хранить (как можно догадаться, но для ясности) координаты местоположения (но только тогда, когда у меня нет координат уже для определенного местоположения).

Я буду запрашивать эту таблицу в моей программе Python, чтобы узнать, есть ли у меня координаты для предварительно заданного местоположения. Я делаю это, чтобы ускорить использование пакета geopy, который запрашивает Google Geolocation Service.

Как сохранить возвращенные поплавки, соответствующие местоположению? До сих пор у меня есть следующие:

myVar = cur.execute("SELECT latitude, longitude FROM coords WHERE location ='" + jobLocation + "';") 
if myVar == 1: 
    print(cur.fetchone()) 
else: 
    try: 
     _place, (_lat, _lon) = geos.geocode(jobLocation, region='GB', exactly_one=False) 
     print("%s: %.5f, %.5f" % _place, (_lat, _lon)) 
    except ValueError as err: 
     print(err) 

код работает (ну, на самом деле не ...), но я понятия не имею, как получить возвращаемые координаты в отдельные переменные с плавающей точкой.

Вы можете помочь?

ответ

4

Когда вы cur.fetchone(), вы должны хранить результат где-то:

row = cur.fetchone() 
print row[0], row[1] 

Теперь row[0] будет содержать широту и грести [1] долготы.

Если вы сделаете это при подключении:

cur = con.cursor(mdb.cursors.DictCursor) 

вы можете использовать словарь для обозначения столбцов по имени:

row = cur.fetchone() 
print row["latitude"], row["longitude"] 
+0

Отлично. Благодарю. –

+0

Если этот ответ сработал для вас, отметьте его как принятый ответ, чтобы другие пользователи знали, что он работает, и что на этот вопрос был дан ответ. Благодарю. –

+0

Отличный ответ. К сожалению, ответ не указан в официальных документах. –

Смежные вопросы