我试图在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这样做。 没有例外或错误消息。当我尝试手动列出数据库中的表时,我找不到新创建的表。 有什么建议可能是错的吗?
答案 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()