0

我已经使用这个创建命令创建了表:

CREATE TABLE test_table(id INT PRIMARY KEY,name VARCHAR(50),price INT)

我想插入到这个表中,其中值已经存储在变量中

bookdb=# name = 'algorithms'
bookdb-# price = 500
bookdb-# INSERT INTO test_table VALUES(1,'name',price);

我收到以下错误:

错误:“名称”处或附近的语法错误第 1 行:名称 = '算法'

谁能指出错误并针对上述问题提出解决方案?

提前致谢

编辑:

import psycopg2
import file_content
try:
    conn = psycopg2.connect(database='bookdb',user='v22')
    cur = conn.cursor()
    cur.execute("DROP TABLE IF EXISTS book_details")
    cur.execute("CREATE TABLE book_details(id INT PRIMARY KEY,name VARCHAR(50),price INT)")
    cur.execute("INSERT INTO book_details VALUES(1,'name',price)")  
    conn.commit()
except:
    print "unable to connect to db"

我已经使用上面的代码将值插入到表中,包含要插入到表中的值的变量名称和价格在 file_content python 文件中可用,我已经导入了该文件。正常的 INSERT 语句手动获取值,但我希望我的代码获取存储在变量中的值。

4

3 回答 3

1

SQL不支持变量的概念。

要使用变量,您必须使用一种编程语言,例如JavaCXojo。一种这样的语言是PL/pgSQL,您可以将其视为 SQL 的超集。PL/PgSQL 通常作为 Postgres 安装程序的一部分捆绑在一起,但并非总是如此。

我建议你阅读一些关于 SQL 的基本教程。

看到这个类似的问题:How do you use script variables in PostgreSQL?

于 2013-08-05T07:27:41.117 回答
0

这里没有安装 postgres,但你可以试试这个

import psycopg2
import file_content
try:
    conn = psycopg2.connect(database='bookdb',user='v22')
    cur = conn.cursor()
    cur.execute("DROP TABLE IF EXISTS book_details")
    cur.execute("CREATE TABLE book_details(id INT PRIMARY KEY,name VARCHAR(50),price INT)")
    cur.execute("INSERT INTO book_details VALUES(1, '%s', %s)" % (name, price))
    conn.commit()
except:
    print "unable to connect to db"
于 2013-08-05T08:43:58.653 回答
0

如果您使用 PSQL 控制台:

\set name 'algo'
\set price 10
insert into test_table values (1,':name',:price)
\g
于 2013-08-05T07:36:38.270 回答