2017-08-27 69 views
0

我是Python和SQL的新手。 我最終想做的事情是用戶鍵入一個值,以便在PostgreSQL中插入表中。 我已經嘗試了一些方法,我可以找到,如何使用變量插入到表中從python到PostgreSQL

,但我一直沒能成功地插入。 這是我現在有:

import psycopg2 
from config import config 

def create_tables(a): 
    """ create tables in the PostgreSQL database""" 
    commands = (
     """ 
     SET num 10, 
     INSERT INTO Hotel_A (date, Suite, StandardKing) VALUES ('2017-09-12', num, 3) 
     """, 
     """ 
     INSERT INTO Hotel_A (date, Suite, StandardKing) VALUES ('2017-09-29', 5, 3) 
     """, 
     """ 
     INSERT INTO Hotel_A (date, Suite, StandardKing) VALUES ('2017-09-23', 5, 3) 
     """ 
     ) 

    conn = None 

    try: 
     # read the connection parameters 
     params = config() 
     # connect to the PostgreSQL server 
     conn = psycopg2.connect(**params) 
     cur = conn.cursor() 

     # create table one by one 
     for command in commands: 
      cur.execute(command) 

     # close communication with the PostgreSQL database server 
     cur.close() 
     # commit the changes 
     conn.commit() 

    except (Exception, psycopg2.DatabaseError) as error: 
     print(error) 

    finally: 
     if conn is not None: 
      conn.close() 

HotelASuite = 10 

if __name__ == '__main__': 
    create_tables(HotelASuite) 

我想要做的NUM = HotelASuite這是我的目標。

非常感謝您的幫助! 我使用Python 2.7和PostgreSQL 9.6。

+0

能否請您解釋一下你的問題 –

+0

包含在問題的代碼,而不是它的鏈接。換句話說,產生[mcve]。看看例如[這個Q/A](https://stackoverflow.com/questions/9075349/using-insert-with-a-postgresql-database-using-python)如何使用佔位符。最後,永遠不要手動將字符串格式或連接值連接到查詢。 –

+0

因此,當我插入這樣的值時,INSERT INTO Hotel_A(date,Suite,StandardKing)VALUES('2017-09-12',5,3),而不是寫入實際值,我想使用變量。所以我希望它看起來像INSERT INTO Hotel_A(date,Suite,StandardKing)VALUES(date,int1,int2)其中date,int1和int2實際上是2017-09-12,5和3.這是否有意義? –

回答

1
var1 = "x" 
var2 = datetime.datetime.now() 
curs.execute("INSERT INTO sometable (col1, col2) VALUES (%s, %s)", (var1,var2)) 

the manual

相關問題