2016-09-19 3 views
0

запроса 1: Использование панды read_sql для чтения из MySQL. Результирующий файл данных имеет столбец, тип данных которого является строками Unicode. Этот столбец преобразуется в кортеж и используется в следующем запросе.read_sql и красное смещение дает ошибку на юникод

Запрос 2: Использование pandas read_sql для чтения из Redshift. Запрос что-то вроде

select b.a from b where b.c in {0} 

На одной строке это дает мне ошибку. Строка похожа на u «Hello» There », которая является допустимой строкой unicode. Ошибка

syntax error at or near ""Hello 'There"" 

Но не следует считать, что путь. Его воспринимая его как пустую строку («»), а затем не-понятным символом, как (Hello «Там„“)

Если некоторые настройки будут изменены или некоторые параметры в read_sql быть добавлены

ответ

0

Я подозреваю, что это сообщение об ошибке генерируется кем-то заменяющего маркер (я использовал {something}) шаблон, как

'syntax error at or near "{something}"' 

Это означает, что вместо этого вы должны увидеть его в качестве жалобы на одну строку, значение которой, казалось бы,

'"Hello \' There"' 

Другими словами, кажется, что вы имеете дело с пятнадцатисимвольной строкой, начинающейся и заканчивающейся символом двойной кавычки, хотя всегда есть вероятность, что некоторые неправильные преобразования или кавычки добавили двойные кавычки. Никакого кода, без трассировки, так сложно сказать.

Кажется, что где-то в цепочке обработки есть некорректная обработка одиночных апострофов в строковых литералах SQL. В SQL, что строка будет правильно представлена ​​в виде

'"Hello, ''There"' 

Вы можете заметить, что одинарные кавычки встраивается в строку пришлось удвоить, чтобы представить его - синтаксис SQL конкретно обозначает это как правильный путь, чтобы вставлять апостроф в строковых константах SQL. Поскольку на самом деле вы не показываете детали своего кода, существует ограничение на то, насколько полезным может быть этот ответ.

Я подозреваю, что вы можете писать свой собственный SQL, в этом случае данный запрос в переменной sql вы можете рассмотреть вопрос об использовании

sql.replace("'", "''") 

в качестве значения, введенного в запросе. Но будьте осторожны со всеми обычными предупреждениями об инъекции SQL, если вы планируете включать пользовательские входы в эту схему.

+0

Значение не '' 'Hello,' 'There' '' это '' Привет, 'There' 'или вы могли бы сказать '' Hello, \ 'There' –

+0

И я использую панды для чтения sql не родной python способ использовать его –

+0

в кортеже можно увидеть как 'u" Hello 'There "' –

Смежные вопросы