Първата опция е правилният начин за поставяне на параметри на заявката в заявката - нарича се параметризирана заявка . В този случай вие позволявате на драйвера на базата данни да избягва параметрите на заявката, безопасно да ги вмъква в заявката и да обработва преобразуванията от тип Python в MySQL.
Грешката, която получавате, означава, че не може да преобразува един от ID
, Record
, Latitude
, Longitude
или code
стойности на параметри към валиден тип база данни MySQL. За да бъдете конкретни, вижте типовете променливи, които сте публикували:
ID <type 'unicode'>
Record <type 'unicode'>
Latitude <class 'bs4.element.NavigableString'>
Longitude <class 'bs4.element.NavigableString'>
code <type 'unicode'>
Проблемът е с Latitude
и Longitude
- те са BeautifulSoup
NavigableString
екземпляри на клас - преобразувателят на MySQL има затруднения да разбере как да конвертира NavigableString
обект във валиден тип MySQL. Преобразувайте ги в низове изрично предварително:
update = """
INSERT INTO
myDB.newtable
(ID,Record,Latitude,Longitude,code)
VALUES
(%s,%s,%s,%s,%s)
"""
cursor2.execute(update, (ID, Record, str(Latitude), str(Longitude), code))