python通用数据库连接类_Python类继承如何使用它连接到mysql数据库

本文探讨了在Python 2.7中如何使用类继承来建立数据库连接。作者创建了User和Database类,并尝试通过第三个类DatabaseConnect进行数据库连接。在实例化和调用方法时遇到问题,对如何正确传递和使用类属性感到困惑。讨论了如何初始化DatabaseConnect类以及在连接到数据库时如何使用User和Database类的属性。
摘要由CSDN通过智能技术生成

我使用的是python2.7,我编写了一组python类,以便将数据上载到数据库。然而,我不确定我是否完全理解如何在类与类之间使用继承。我有一个User和Database类,它从一个列表中搜索用户/数据库:class User(object):

user_lst = ['user1', 'user2', 'user3']

def __init__(self, username):

self.username = username

def find_user(self):

if self.username not in self.user_lst:

print('User not found, script will exit')

exit()

else:

pass

class Database(object):

db_lst = ['db1', 'db2', 'db3']

def __init__(self, database):

self.database = database

def find_db(self):

if self.database not in self.user_lst:

print('Database not found, script will exit')

exit()

else:

pass

我使用raw_input()获取用户和数据库的值,它返回:

^{pr2}$

要按照我的理解实例化这些类,我需要通过类传递这些值,此时我还可以调用方法-User(un).find_user()

Database(db).find_db()

现在我想使用第三个类来继承这些值,以便连接到数据库:class DatabaseConnect(User, Database):

def __init__(self):

User.__init__(self, username)

Database.__init__(self, database)

def connect(self, pw):

try:

connect = MySQLdb.connect(host = 'localhost', user = self.username, passwd = pw, db = self.database, local_infile = 1)

cursor = connect.cursor()

print('Connected to '+self.database)

except:

print('Did not connect to database')

exit()

然后我尝试使用以下方式连接:DatabaseConnect().connect('password1')

但是这不起作用。我试图将DatabaseConnect类的init函数添加到数据库中:def __init__(self, username, database):

User.__init__(self, username)

Database.__init__(self, database)

我还尝试过从这些类创建对象变量,例如:user_obj = User(un)

user_obj.find_user()

db_obj = Database(db)

db_obj.find_user()

我需要创建这些对象变量,然后通过我的DatabaseConnection类传递它们吗?如果需要,我甚至需要继承吗?这就是我困惑的原因。假设我使用这些对象变量并使用这个类:class DatabaseConnect(User, Database):

def __init__(self, username, database):

self.username = User.username

self.database = Database.database

def connect(self, pw):

try:

connect = MySQLdb.connect(host = 'localhost', user = self.username, passwd = pw, db = self.database, local_infile = 1)

cursor = connect.cursor()

print('Connected to '+self.database)

except:

print('Did not connect to database')

exit()

然后我用以下方法实例化它:db_connect = DatabaseConnect(user_obj, db_obj)

这与简单地使用变量本身有何不同:db_connect = DatabaseConnect(un, db)

为什么我必须使用:self.username = User.username

而不是简单地:self.username = username

我正在努力让我的头脑围绕这个概念,所以任何人都会感激。谢谢

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值