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);

次のエラーが表示されます。

エラー: 「name」またはその付近で構文エラーが発生しました 行 1: name = 'algorithms'

誰かが間違いを指摘して、上記の解決策を提案できますか?

前もって感謝します

編集:

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などのプログラミング言語を使用する必要があります。そのような言語の 1 つがPL/pgSQLで、これは SQL のスーパーセットと考えることができます。PL/PgSQL はPostgres インストーラーの一部としてバンドルされることがよくありますが、常にそうとは限りません。

SQL に関するいくつかの基本的なチュートリアルを読むことをお勧めします。

この同様の質問を参照してください: How do you use script variables in PostgreSQL?

于 2013-08-05T07:27:41.117 に答える
0

PSQL コンソールを使用している場合:

\set name 'algo'
\set price 10
insert into test_table values (1,':name',:price)
\g
于 2013-08-05T07:36:38.270 に答える
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 に答える