如何使用新数据添加更新表-PostgreSQL + Python

时间:2018-10-22 13:07:01

标签: python postgresql-9.5

我已编写查询以将数据添加到数据库,但想添加更多数据而不每次都删除数据库。我该如何写这样的查询?

我所拥有的:

category = (
    (1, 'Sports'),
    (2, 'Entertainment'),
    (3, 'Politics'),
    (4, 'Technology'),
    (5, 'Health'),
    (6, 'Business'),
    (7, 'Travel Competition'),)

query2 = "INSERT OR REPLACE INTO users_category (Id, Name) VALUES (%s, %s)
cursor.executemany(query2, category)

我尝试过的方法:

category = (
    (1, 'Sports'),
    (2, 'Entertainment'),
    (3, 'Politics'),
    (4, 'Technology'),
    (5, 'Health'),
    (6, 'Business'),
    (7, 'Travel'),
    (8, 'Other'),) #new data

query2 = "INSERT INTO users_category (Id, Name) VALUES (%s, %s) ON CONFLICT (id) DO UPDATE SET Name = excluded.users_category.Name"

错误回溯:

Error invalid reference to FROM-clause entry for table 
"users_category"
LINE 1: ... 'Sports') ON CONFLICT (id) DO UPDATE SET Name = 
excluded.u...
                                                         ^
HINT:  There is an entry for table "users_category", but it cannot be 
referenced from this part of the query.

所需结果:

一个脚本,用于向现有表中添加更多数据,而无需手动刷新先前的数据。

谢谢。

1 个答案:

答案 0 :(得分:0)

这有效:

    string bodyAsText = null;
    if (request.ContentLength > 0)
    {
        var body = request.Body;
        request.EnableRewind();

        using (var streamReader = new StreamReader(request.Body, Encoding.UTF8))
        {
            bodyAsText = await streamReader.ReadToEndAsync();
            request.Body.Seek(0, SeekOrigin.Begin);
        }
        request.Body = body;
    }