查询 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
但是,其他操作系统会有所不同。