psycopg2.ProgrammingError: синтаксическая ошибка в или рядом с "select" - PullRequest
0 голосов
/ 03 сентября 2018

У меня есть скрипт на python, который читает файл sql и выполняет сохраненную в нем команду sql. Но при его выполнении я получил ошибку ниже:

psycopg2.ProgrammingError: syntax error at or near "select"
LINE 1: select * from image

Содержимое файла sql:

выберите * из изображения

, что просто и должно быть правильно.

код, выдавший ошибку (последняя строка, более конкретно):

 cur=conn.cursor()
 string=open(script,'r',encoding='utf-8').read()#script is the sql file
 cur.execute(string)

кто-нибудь может посоветовать?

---- обновление -----

ниже указана функция в скрипте Python. Я не публикую весь сценарий, так как он слишком длинный.

def list_(csv, sql=None , script=None , host = None, dbname=None , user=None , pwd=None):
    print(sql)
    print(script)
    if (sql):
        print("sql")
        with conn2db(host,dbname,user,pwd) as conn:
            cur = conn.cursor()
            cur.execute(sql)
    if (script):
        print("script")
        with conn2db(host,dbname, user, pwd) as conn:
            cur = conn.cursor()
            string =  open(script, 'r', encoding='utf-8').read()
            print(string)
            cur.execute(string)
            #cur.execute(open(script, 'r', encoding='utf-8').read())
    with open(csv,'w') as file:
        for record in cur:
            mystr=str(record)[1:-2] if str(record)[-1]==',' else str(record)[1:-1]
            file.write(mystr+'\n')
            #file.write('\n')

Ответы [ 2 ]

0 голосов
/ 08 мая 2019

Сегодня я снова затронул эту проблему и удалил исходный файл, создал новый и набрал команду sql. Теперь все работает как шарм.

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

0 голосов
/ 04 сентября 2018

Просмотр строки подключения, а также ваших схем и таблиц в вашей базе данных поможет. Пожалуйста, подтвердите, что все это правильно. Кроме того, стоит попробовать .strip () в строке SQL после чтения ее из файла или добавления точки с запятой в конец строки SQL.

...