Python字符串比较,用户输入 - > MariaDB的

时间:2017-08-11 13:11:40

标签: python string mariadb comparison-operators

我需要帮助进行字符串比较。我知道这个主题有很多问题,但它们似乎都没有对我的问题有所帮助。该程序根据用户输入获取位置坐标,然后检查该位置是否已经在数据库中,如果没有,则在那里更新位置及其坐标。 当数据库中的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')

1 个答案:

答案 0 :(得分:0)

每个程序只连接一次,每次查询一次。