【问题标题】:SQL : Insert and Update a new column from existing columnSQL:从现有列插入和更新新列
【发布时间】:2014-06-17 18:21:09
【问题描述】:

Query matching string tags

SQL : 从现有列插入和更新新列

我想在我的 PostGRESQL 数据中插入一个新列,从现有列进行解析。

我有一个字符串http://google.com/sadfasdfsd&AA=mytag&SS=sdfsdf,正在URL 列中更新。那我怎么能在这个数据库中插入一个名为AAtag的新列。我将使用 Python 来解析字符串。请帮我编写以下任务的查询:


查询 1. 在该表中插入一个新列 AAtag

ALTER TABLE table_name
ADD AAtag varchar

正确吗? AAtag 需要引用吗?


查询 2. 在我从 URL 列运行解析脚本后(假设我在 Pyton 列表中有标签列表),我想填写 AAtag 列。

UPDATE table_name
SET AAtag='{0!f}'
WHERE URL='{0!s}';

【问题讨论】:

    标签: python mysql sql postgresql


    【解决方案1】:

    查询 1:不,不需要引用 AATag。但是,如果它没有被引用,它将被强制为小写。此外,引用对名称使用双引号,而不是对文字使用单引号。因此,如果您不引用该声明,您会看到:

    create table table_name (URL text);
    alter table table_name add AATag varchar;
    
    nsp=# \d table_name
           Table "public.table_name"
     Column |       Type        | Modifiers
    --------+-------------------+-----------
     url    | text              |
     aatag  | character varying |
    

    查询 2:

    nsp=# update table_name set AATag = '{0!f}' where URL = '{0!s}';
    UPDATE 0 (mine doesnt have any data in it)
    

    您的示例将出于同样的原因工作,列未加引号,因此将是小写。如果您真的希望所有内容都混合大小写,您会:

    create table table_name ("URL" text);
    alter table table_name add "AATag" varchar;
    
    nsp=# \d table_name
           Table "public.table_name"
     Column |       Type        | Modifiers
    --------+-------------------+-----------
     URL    | text              |
     AATag  | character varying |
    
    nsp=# update table_name set "AATag" = '{0!f}' where "URL" = '{0!s}';
    UPDATE 0
    

    我想我误读了这个问题。您是在问如何在 sql 中编写查询来更改数据库的结构,或者如何在 python 中编写查询?后者是一个不同的主题。基本上,你会:

    import psycopg2
    import psycopg2.extras
    pg_conn = psycopg2.connect("dbname=dbname host=localhost user=postgres")
    pg_cur = pg_conn.cursor(cursor_factory=psycopg2.extras.RealDictCursor)
    pg_cur.execute('whatever')
    pg_conn.commit()
    

    “whatever”将是您要执行的语句。您可以准备语句、提供参数等。您需要查看 psycopg2 了解详细信息。因此,要从 python 添加列:

    pg_cur.execute('alter table table_name add "AATag" varchar')
    

    当然,您需要安装该软件包。在 unix 上是:

    pip install psycopg2
    

    但是,其他操作系统会有所不同。

    【讨论】:

      猜你喜欢
      • 2016-10-11
      • 1970-01-01
      • 1970-01-01
      • 2019-01-26
      • 2014-07-18
      • 1970-01-01
      • 2017-08-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多