无法在Python

时间:2017-01-13 18:34:49

标签: python postgresql

我试图在Python中使用psycopg2创建一个Postgres表,如下所示:

import psycopg2

class DbOperations (object):

def __init__(self):

    self.dummy = None
    self.conn = None
    self.cur = None
    self.query = None
    self.db_name = "alarm_log"
    self.table_name = "alarms"
    self.user = "cayman"
    self.password = "admin"
    self.host = "127.0.0.1"

def db_connect(self):

    self.conn = psycopg2.connect(dbname=self.db_name, user=self.user, password=self.password, host=self.host)
    self.cur = self.conn.cursor()

def db_disconnect(self):

    self.conn.close()

def db_create_table(self):

    self.query ="""
                CREATE TABLE COMPANY(
           ID INT PRIMARY KEY     NOT NULL,
           NAME           TEXT    NOT NULL,
           AGE            INT     NOT NULL,
           ADDRESS        CHAR(50),
           SALARY         REAL
        );
    """
    print (self.query)
    self.cur.execute(self.query)

然后我按如下方式构造对象:

db_app = DbOperations()
db_app.db_connect()
db_app.db_create_table()

我可以手动连接到数据库并创建表。但是,我无法使用Python这样做。 没有例外或错误消息。当我尝试手动列出数据库中的表时,我找不到新创建的表。 有什么建议可能是错的吗?

2 个答案:

答案 0 :(得分:2)

似乎,您在commit方法结束时遗漏了db_create_table

self.conn.commit()

答案 1 :(得分:1)

Iron Fist的答案是绝对正确的,但是如果你不想让你的代码全部提交,你也可以在连接上设置它:

def db_connect(self):
    self.conn = psycopg2.connect(dbname=self.db_name, user=self.user, password=self.password, host=self.host)
    self.conn.autocommit = True
    self.cur = self.conn.cursor()