У меня возникли проблемы с выполнением этого запроса в python. У меня есть база данных IP, которая имеет три столбца startip, endip и страну. Теперь я хочу расположить ip. это мой кодmysql показывает ошибку в синтаксисе
def get_country(ip):
try:
conn = MySQLConnection(host='localhost', database='ipdb', user ='root', password='password')
cursor = conn.cursor()
query = 'SELECT * FROM db6 WHERE %s BETWEEN INET_ATON(startip) AND INET_ATON(endip)'
ip_inint= ip2int(ip)
cursor.execute(query,ip_inint)
row = cursor.fetchone()
while row is not None:
print " Start range %s end range %s country %s " %(row[0], row[1], row[2])
row = cursor.fetchone()
except Error as error:
print(error)
функция ip2int является
def ip2int(addr):
return struct.unpack("!I", socket.inet_aton(addr))[0]
ошибки я получаю это
1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '%s BETWEEN INET_ATON(startip) AND INET_ATON(endip)' at line 1
что может быть проблема?
Что такое% s с отступом? – apomene
Что означает% s здесь? в этом месте вам нужно имя столбца или подобное? – Olli
Вам также нужны обратные метки (') вокруг имени вашей таблицы – heinst