我需要帮助进行字符串比较。我知道这个主题有很多问题,但它们似乎都没有对我的问题有所帮助。该程序根据用户输入获取位置坐标,然后检查该位置是否已经在数据库中,如果没有,则在那里更新位置及其坐标。 当数据库中的user_input表为空时,数据将毫无问题地插入数据库。问题在于字符串比较,其中数据库中的现有位置与用户输入(item == loc)进行比较,即使记录已经在数据库中,脚本也会尝试将其插入到那里。如何进行比较?所有的帮助表示赞赏。
def cordinates(address):
import requests
url="https://maps.googleapis.com/maps/api/geocode/json?address=%s" %
(address)
reply = requests.get(url).json()
loc = reply['results'][0]['address_components'][0]['long_name']
lat = reply['results'][0]['geometry']['location']['lat']
lng = reply['results'][0]['geometry']['location']['lng']
return (loc,lat,lng)
def selecting():
import pymysql
db = pymysql.connect('localhost','vagrant','vagrant'
,database='coordinatesdb')
cursor = db.cursor()
cursor.execute('select loc from user_input;')
results = cursor.fetchall()
cursor.close()
return results
def inserting(loc, lat, lng):
import pymysql
db = pymysql.connect('localhost','vagrant','vagrant',
database='coordinatesdb')
cursor = db.cursor()
new_row = "insert into user_input (loc, lat, lng) values (%s, %s, %s)"
cursor.execute(new_row, (loc, lat, lng))
db.commit()
cursor.close()
address = input('Type loc: ')
a=cordinates(address)
loc = a[0]
lat = a[1]
lng = a[2]
select_results = selecting()
if not select_results:
inserting(loc, lat, lng)
print('Inserting as table is empty')
exit
def cordinates(address):
import requests
url="https://maps.googleapis.com/maps/api/geocode/json?address=%s" % (address)
reply = requests.get(url).json()
loc = reply['results'][0]['address_components'][0]['long_name']
lat = reply['results'][0]['geometry']['location']['lat']
lng = reply['results'][0]['geometry']['location']['lng']
return (loc,lat,lng)
def selecting():
import pymysql
db = pymysql.connect('localhost','vagrant','vagrant' ,database='coordinatesdb')
cursor = db.cursor()
cursor.execute('select loc from user_input;')
results = cursor.fetchall()
cursor.close()
return results
def inserting(loc, lat, lng):
import pymysql
db = pymysql.connect('localhost','vagrant','vagrant',
database='coordinatesdb')
cursor = db.cursor()
new_row = "insert into user_input (loc, lat, lng) values (%s, %s, %s)"
cursor.execute(new_row, (loc, lat, lng))
db.commit()
cursor.close()
address = input('Type loc: ')
a=cordinates(address)
loc = a[0]
lat = a[1]
lng = a[2]
select_results = selecting()
if not select_results:
inserting(loc, lat, lng)
print('Inserting as table is empty')
exit
for item in select_results:
if item == loc:
print('Record is already in the database')
quit()
inserting(loc, lat, lng)
print('Inserting')
答案 0 :(得分:0)
每个程序只连接一次,每次查询不一次。