Форум сайта python.su
0
Добрый день.
Есть база postgres. Мне присылают скрипт вот такого плана
\ir 'drop_schema.sql' \ir '../v0.0.1/install.sql' \ir '../v0.0.2/install.sql' \ir '../v0.3.0/install.sql' \ir '../v0.4.0/install.sql' \ir '../v0.5.0/install.sql' \ir '../v0.5.1/install.sql' \ir '../v0.6.0/install.sql' \ir '../v0.6.1/install.sql' \ir '../v0.7.0/install.sql' \ir '../v0.8.0/install.sql' \ir '../v0.9.0/install.sql' \ir '../v0.9.1/install.sql' \ir '../v0.9.2/install.sql' \ir '../v0.9.3/install.sql' \ir '../v0.9.4/install.sql' \ir '../v0.9.5/install.sql' \ir '../v0.9.6/install.sql' \ir '../v0.9.7/install.sql' \ir '../v1.0/install.sql' \ir 'init_data.sql'
class Sql_Import: def __init__(self, name=Config.database['user'], db=Config.database['database'], init_sql=Config.database['init_sql'], home=Config.path['init_sql_home'], ): self.name=name self.db=db self.init_sql=init_sql self.home=home def load_init_sql(self): self.instructions='' with open('{0}{1}'.format(self.home,self.init_sql),'r') as f: for line in f: #self.instructions.append(line.rstrip('\n')) self.instructions+=line print self.instructions return self.instructions def update_db(self): self.exceptions='' self.instructions=self.load_init_sql() conn=psycopg2.connect(database=self.db,user=self.name) cur=conn.cursor() #for command in self.instructions: try: cur.execute(self.instructions) except psycopg2.Error, e: self.exceptions+=(e.pgerror+'\n') pass cur.close() conn.close() print(self.exceptions) return self.exceptions
ОШИБКА: ошибка синтаксиса (примерное положение: "\") LINE 1: \ir 'drop_schema.sql'
Офлайн
25
Warning
Never, never, NEVER use Python string concatenation (+) or string parameters interpolation (%) to pass variables to a SQL query string. Not even at gunpoint.
Офлайн
0
s0rgЯ в cur.execute() передаю содержимое файла со скриптами. При чем тут то, что вы написали?
Отсюда:
Офлайн