J'ai besoin d'aide pour comparer les chaînes. Je sais qu'il y a beaucoup de questions sur ce sujet mais aucune d'elles ne semble aider dans mon problème. Ce programme obtient les coordonnées de localisation en fonction de l'entrée de l'utilisateur, puis vérifie si cet emplacement est déjà dans la base de données, sinon, l'emplacement et ses coordonnées sont mis à jour là. Lorsque la table user_input dans la base de données est vide, les données sont insérées dans la base de données sans problème. Le problème réside dans la comparaison de chaîne où les emplacements existants de la base de données sont comparés avec l'entrée d'utilisateur (item == loc), même si l'enregistrement est déjà dans la base de données, le script essaye de l'insérer là. Comment faire fonctionner la comparaison? Toute l'aide est appréciée.Comparaison de chaînes de caractères Python, entrée utilisateur -> mariadb
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')
imprimez l'élément et localisez-le dans votre boucle for, voir si elles sont ce que vous pensez qu'elles devraient être. ils ne sont probablement pas – Chris
Imprimé, ils ne sont pas les mêmes que vous soupçonniez, l'article est ('Helsinki',) et loc est Helsinki – zKaj
Comment faire pour couper les parenthèses loin de la sortie de SQL? – zKaj