Заставить Python использовать «вместо» для строк - PullRequest
0 голосов
/ 01 октября 2019

У меня есть скрипт, который переносит данные из одной базы данных в другую, написанные на python и sql, используя библиотеку psycopg2.

Я извлекаю строку из первой базы данных и сохраняю ее для дальнейшего использования в списке, чтобы я могпоместите его во вторую базу данных, когда я закончу собирать все необходимые данные.

Если в строке есть апостроф, то python будет представлять строку с помощью "". Проблема в том, что sql интерпретирует "" как указание имени столбца, а "" для строк, тогда как python интерпретирует оба как строки. Я хочу заставить python использовать апострофы для представления строки (или другого подходящего обходного пути)

Google ничего не обнаружил. Даже не могу найти упоминания о том факте, что python будет использовать "", когда в вашей строке есть апострофы. Я подумал о том, чтобы заменить апострофы в моей строке другим символом и преобразовать его позже, но это выглядит как неуклюжее решение.

Например

MyString = 'it\'s'
MyList = [MyString]
print(MyList) # returns "it's"
print(MyList[0]) # returns it's

Когда я вставляю новые значения вБаза данных Я вставляю весь список в качестве значений.

INSERT INTO table VALUES MyList

Здесь возникает ошибка, потому что строка использует «» вместо «». Решение на стороне Python или SQL будет работать.

1 Ответ

0 голосов
/ 01 октября 2019

Нашли исправление. Это немного отвратительно, но это работает. Преобразуйте список в строку. Используйте функцию замены следующим образом:

    MyString = MyString.replace('"',"'")

И затем используйте эту строку вместо этого.

...