我有一个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')
答案 0 :(得分:0)
查看连接字符串以及数据库中的模式和表将有所帮助。请确认这些都是正确的。此外,从文件中读取.strip()或从SQL字符串的末尾添加分号之后,对SQL字符串运行.strip()值得一试。
答案 1 :(得分:0)
今天,我再次遇到此问题,并删除了原始文件,创建了一个新文件,然后键入了sql命令。一切现在都像魅力一样。
我的猜测是原始文件包含一些导致此问题的不可见字符。但是为什么它们在那里存在仍然让我感到困惑。