Можете ли вы избежать символов, используя параметры и executemany? - PullRequest
0 голосов
/ 22 апреля 2020

Выполнение не может экранировать параметризованные строки, такие как выполнение?

Использование Python3 Я пытаюсь вставить список в mysql.

sqlquery = "INSERT INTO vdaytemp (idvoyage,vdaydate,vdaynotes) VALUES (%s, %s, %s)"
val=("21","2020-04-01","Highway 22(apples are green)")
mycursor.execute(sqlquery, val)

Это работает нормально и вставляет текстовая строка с круглыми скобками. Но если я попытаюсь вставить список с помощью executemany, то это помешает.

sqlquery = "INSERT INTO vdaytemp (idvoyage,vdaydate,vdaynotes) VALUES (%s, %s, %s)"
val = [("21","2020-04-01","Highway 22(apples are red)"),("21","2020-04-01","Highway 23(apples are red)")]
mycursor.executemany(sqlquery, val)
/usr/local/lib/python3.7/site-packages/mysql/connector/connection_cext.py in prepare_for_mysql(self, params)
    624         """
    625         if isinstance(params, (list, tuple)):
--> 626             result = self._cmysql.convert_to_mysql(*params)
    627         elif isinstance(params, dict):
    628             result = {}

AttributeError: 'NoneType' object has no attribute 'convert_to_mysql'

Это сработает, если я уберу скобки из строки. Я собираюсь придумать другой способ сделать это?

...