Python вставить строку со случайной смесью "и" в базу данных - PullRequest
0 голосов
/ 02 апреля 2020

Я запускаю команду '1003 *' терминала 'strings' для файла и сохраняю результат, представляющий собой последовательность читаемых строк, в переменной. Результаты также записываются в текстовый файл. Затем мне нужно загрузить результаты в базу данных. Проблема в том, что результат часто содержит символы 'и' в непредсказуемом порядке. Это приводит к ошибке SQL. Я пытался создать string.replace с пустой строкой и \ escape. Я также пытался "" " или '' 'вокруг строки, но ни одна из них не работает, так как я не знаю, какой тип кавычки будет первым. Мы ценим любые предложения.

fileName = filePath.rsplit('/', 1)[1]
stream = os.popen('strings ' + filePath)
output = stream.readlines()
file = open(filePath + "/" + fileName + "_StringsResults.txt", "w+")
for o in output:
            file.write(str(o))
            results += str(o)
file.close()

dsn = 'postgresql://###########@localhost:########/test?sslmode=disable'
conn = psycopg2.connect(dsn)

with conn.cursor() as cur:
      cur.execute(
         "UPSERT INTO test (testID) VALUES ('%s')" % (results))          
conn.commit()

1 Ответ

0 голосов
/ 02 апреля 2020

да, это сработало, спасибо миллион. Для всех, кто интересуется, решение было примерно:

query = """UPSERT INTO test (testID) VALUES (%s)"""
#Connection code etc.
with conn.cursor() as cur:
      cur.execute(query, [results])
conn.commit()

[] раунд параметра был необходим, чтобы избежать ошибки типа.

...