使用MySQLdb返回值 - Python

时间:2013-06-14 17:33:58

标签: python mysql mysql-python

我有一个名为coords的表,它被定义为:

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 |                |
-----------------------------------------------------------------------------

我在Python脚本中使用MySQLdb导入。此表的目的是存储(您可以猜测,但为了清楚起见)位置坐标(但仅当我没有已经针对特定位置的坐标时)。

我将在我的Python程序中查询此表,看看我是否已经拥有预先请求位置的坐标。我这样做是为了加快使用询问Google地理定位服务的geopy软件包。

如何存储与某个位置对应的返回浮动?到目前为止,我有以下内容:

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)

代码有效(好吧,不是真的......)但我不知道如何将返回的坐标转换为单独的浮点变量。

你能帮忙吗?

1 个答案:

答案 0 :(得分: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"]