Как указать postgres схему в функции copy_from? - PullRequest
0 голосов
/ 01 апреля 2020

Я пытаюсь использовать функцию copy_from в psycopy2 для вставки данных в мою таблицу с именем "ST_DAY_SRS", но как я могу указать схему с именем "NEW_CNYB"? Я использовал параметр параметра, но он не работает, пожалуйста, помогите мне, большое спасибо.

def action():
    conn = psycopg2.connect(host='****',port='45432',
                user='postgres',password='postgres',database='NEW_CNYB',options='-c search_path="NEW_CNYB"')

    df = pd.DataFrame(l, columns=['ID', 'DATE', 'SUNRISE', 'SUNSET'])
    ret=''
    values_list=[]

    for i in df.itertuples():
        values_list.append('\t'.join([i[1],i[2],i[3],i[4]]))
    for value in values_list:
        ret += value + '\n'
    print(ret)
    cur = conn.cursor()
    cur.copy_from(file=io.StringIO(ret),table="ST_DAY_SRS",
                 columns=("ID", "DATE", "SUNRISE", "SUNSET"))
    conn.commit()

1 Ответ

0 голосов
/ 04 апреля 2020

Я бы сделал это, вставив имя схемы перед именем таблицы следующим образом:

   # schema_name.table_name 
    cur.copy_from(file=io.StringIO(ret),table="ST_DAY_SRS",
                     columns=("ID", "DATE", "SUNRISE", "SUNSET"))

Другие возможности, если это не сработало:

  1. Установите схема для всех запросов. Проверьте повторы по этой ссылке
  2. Создайте роль / пользователя, которые принадлежат схеме вместо взамен вставки.

Удачи.

...