2016-10-24 7 views
1

Я хочу использовать переменную в своем SQL-скрипте. Значение переменной 100 (всего несколько). Я сохранил его как csv. файла в этом каталоге: C: \ Users \ Dino \ Desktop \ my_file.csv.Использование переменных в сценарии postgres

Я хочу, чтобы в сценарии SQL для выполнения этого:

import os 
from ask_db import ask_db_params #this script creates the connection to the database 
import sys, os 
def my_function(cur, conn): 
    sql=""" 
     \set outputdir'C:\\Users\\Dino\\Desktop' 
     \set new_var :outputdir '\\my_file.csv' 
     copy my_file to :'new_var';""" 

cur.execute(sql) 
conn.commit() 
if __name__ == '__main__': 
    try: 
    conn = ask_db_params() 
    cur = conn.cursor() 
    analysis_data(cur,conn) 
    logging.info('Data analysed.') 
    except Exception as e: 
    logging.error('Failure', exc_info=True) 
    exit(1) 

У меня есть ошибка:

syntax error at or near "\" ....

Это относится к первой строке.

Любая помощь относительно синтаксиса?

P.S. Я запускаю python для вызова sql-скрипта. ОС Windows

+1

Вы вызываете 'psql' для чтения скрипта? –

+0

Код такой: def my_function (cur, conn): sql = "" "\ set outputdir 'C: \\ Users \\ Dino \\ Desktop' \ set new_var: outputdir '\\ my_file.csv' скопируйте my_file в: 'new_var'; "" ". –

+0

Подробнее, больше! Пожалуйста, поделитесь всем кодом. Измените вопрос, чтобы сделать это. –

ответ

0

Это не сработает. \set - команда psql, а не команда SQL.

Вы должны будете использовать манипуляции со строками в Python, чтобы построить строку SQL, которая выглядит следующим образом:

COPY my_file TO 'C:\Users\Dino\Desktop\my_file.csv' 

Затем используйте execute() с этой SQL строки.