2013-08-05 5 views
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); 

я получаю следующее сообщение об ошибке:

ERROR: syntax error at or near "name" LINE 1: name = 'algorithms'

Может ли кто-нибудь указать на ошибку и предложить решение для вышеуказанного?

Заранее спасибо

Edit:

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" 

Я использовал приведенный выше код для вставки значений в таблицу, переменные имя и цена, содержащий значения, которые будут вставлены в таблицу доступны в файле python file_content, и я импортировал этот файл. Нормальный оператор INSERT принимает значения вручную, но я хочу, чтобы мой код принимал значения, которые хранятся в переменных.

+0

Like ошибка говорит: ваша первая строка не является допустимым оператором SQL. Вы хотите заменить содержимое переменной в коде python. – mabi

+0

отредактировал вышеприведенный код. Как передать значения инструкции INSERT, которая хранится в переменных? – user2635299

+0

Хммм ... Я думал, что существенно переписать вопрос был неодобрительно на StackExchange. Это уже не вопрос Postgres. Эта новая перезаписанная версия является вопросом программирования Python. –

ответ

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" 
+0

Wow.it работал :) спасибо – user2635299

1

SQL не поддерживает концепцию переменных.

Чтобы использовать переменные, вы должны использовать язык программирования, например Java, C, Xojo. Один из таких языков - PL/pgSQL, который можно рассматривать как супермножество SQL. PL/PgSQL часто является bundled в составе установщиков Postgres, но не всегда.

Предлагаю вам ознакомиться с некоторыми базовыми учебниками по SQL.

Смотрите этот же вопрос: How do you use script variables in PostgreSQL?

+0

Спасибо за info.will check out – user2635299

0

Если вы используете Psql консоль:

\set name 'algo' 
\set price 10 
insert into test_table values (1,':name',:price) 
\g 
+0

спасибо, что это работает. Но я хочу, чтобы это было сделано в моем коде python.see my edit – user2635299

Смежные вопросы