Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 5, 2013 20:19:32

ankane
Зарегистрирован: 2012-11-16
Сообщения: 21
Репутация: +  0  -
Профиль   Отправить e-mail  

Как импортировать в Psycopg2 .sql скрипт?

Добрый день.

Есть база 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'

Как мне его корректно запустить в контексте psycopg2?
Мой вариант :
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

Вычитываю файл со скриптом, передаю в cur.execute(). Но вылетает исключение и ошибка такого плана:
ОШИБКА:  ошибка синтаксиса (примерное положение: "\")
LINE 1: \ir 'drop_schema.sql'

Как скормить скрипт, отловив исключения?

Офлайн

#2 Фев. 5, 2013 22:12:09

s0rg
От:
Зарегистрирован: 2011-06-05
Сообщения: 777
Репутация: +  25  -
Профиль   Отправить e-mail  

Как импортировать в Psycopg2 .sql скрипт?

Отсюда:

Warning

Never, never, NEVER use Python string concatenation (+) or string parameters interpolation (%) to pass variables to a SQL query string. Not even at gunpoint.

Офлайн

#3 Фев. 5, 2013 23:19:13

ankane
Зарегистрирован: 2012-11-16
Сообщения: 21
Репутация: +  0  -
Профиль   Отправить e-mail  

Как импортировать в Psycopg2 .sql скрипт?

s0rg
Отсюда:
Я в cur.execute() передаю содержимое файла со скриптами. При чем тут то, что вы написали?

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version