вставка в базу данных Postgres с помощью psycopg2 - PullRequest
2 голосов
/ 05 ноября 2019

Я вставляю данные в таблицу базы данных Postgresql с помощью библиотеки psycopg2, но получаю ошибку в команде вставки. Может кто-нибудь помочь мне решить эту проблему?

def t_b():  
    table = 'create table {} (Title serial, Link char(50), logo_link 
    char(50), Description Text)'.format(name)  
    cur.execute(table)  
    print("Table created :", name)  

def insertion(name, data):  
    data_s = ",".join(data)
    ins = 'insert into {} (Title,Link,logo_link,Description)values({})'.format(name, data_s)  
    cur.execute(ins)  
    conn.commit()  

def main():  
    t_b("ONE")  
    dd = ('abc', '123', 'INsyustriesz', '<htt:ps>' )  
    insertion("ONE", dd)  

if __name__ == '__main__':  
    main()
    cur.execute()  

И появляется сообщение об ошибке:

psycopg2.errors.SyntaxError: syntax error at or near ":"  
LINE 1: ... logo_link, Description) values(abc,123,INsyustriesz,htt:ps)

и данные не вставляются

1 Ответ

0 голосов
/ 06 ноября 2019

Ошибка возникает из-за того, что вы не включаете одинарные кавычки в раздел values запроса. Вы используете одинарные кавычки в dd, но это поможет Python интерпретировать их как строки. Я бы не рекомендовал объединять все вместе в data_s через join, но фактически указывал бы каждый элемент в разделе VALUES:

    ins = 'insert into {} (Title,Link,logo_link,Description)values({},{},{},{})'.format((name + data))  
...