我怎样才能继承psycopg2?

2024-06-10 10:55:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着像这样继承psycopg2:

import psycopg2

class myp(psycopg):
    pass

ii = myp
ii.connect(database = "myDataBase", user = "myUser", password="myPassword")

然后抛出一个错误:

^{pr2}$

可以从psycopg2库继承吗?在

编辑: 我想使用不同的数据库,所以我只需更改MyDatabase类。像包装纸一样的东西。 示例:

import psycopg2

class MyDatabase(psycopg2):
    def connect(self):
        #do some stuff
        return psycopg2.connect(database = "myDataBase", user = "myUser",   password="myPassword")

对于mysqldb 导入MySQLdb

class MyDatabase(MySQLdb)
    def connect(self):
        #do some stuff
        return psycopg2.connect(database = "myDataBase", user = "myUser", password="myPassword")

和派生类 类MyDataBaseApp(MyDatabase): def add(self,myObjectClass): 数据库=我的数据库() cn=无

        try:
            cn = db.connect()
            cur = cn.cursor()
            cur.execute ("INSERT ...",(myObjectClass.parameter1, myObjectClass.parameter2))
            cn.commit()
        except MyDatabase.DatabaseError, e:
            print e
            if cn:
                cn.rollback()
        finally:
            if cn:
                cn.close()

但根据文件,我必须用另一种方法,建议?在


Tags: importself数据库defconnectpasswordcndatabase
1条回答
网友
1楼 · 发布于 2024-06-10 10:55:31

免责声明:我不熟悉psycopg

更新

似乎是the documentation recommends子类psycopg2.extensions.connection。那么,connect()是一个工厂函数,仍然可以用来创建新的连接,但是您必须将您的类作为工厂提供,according to the docs

完整代码可能看起来更像(未测试):

import psycopg2

class myp(psycopg2.extensions.connection):
    pass

ii = connect(connection_factory=myp,
             database = "myDataBase", user = "myUser", password="myPassword")

<2更新

使用更新后的方法,您将尝试使用不同/不同的接口构建新的类。通常,组合比继承好,参见wikipedia和{a4}。在

相关问题 更多 >