gpt4 book ai didi

Python 类继承 - 如何使用它连接到 mysql 数据库

转载 作者:行者123 更新时间:2023-11-28 23:26:05 25 4
gpt4 key购买 nike

我正在使用 python 2.7,并且我编写了一组 python 类以便将数据上传到我的数据库。但是我不确定我是否完全理解如何在类之间使用继承。我拥有的是一个用户和数据库类——它从列表中搜索用户/数据库:

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() 获取用户和数据库的值:

un = 'user1'
db = 'db1'

按照我的理解来实例化这些类,我需要通过类传递这些值,这时我也可以调用方法-

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

我正在努力理解这个概念,所以任何头脑都会受到赞赏。谢谢

最佳答案

如果您要继承,则不需要创建用户和数据库实例。您可以只创建一个 DatabaseConnect 对象:

class DatabaseConnect(User, Database):

def __init__(self, username, database):
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()


dbConnect = new DatabaseConnect("username", "database")

dbConnect.find_db()
Database not found, script will exit

dbConnect.find_user()
User not found, script will exit

关于Python 类继承 - 如何使用它连接到 mysql 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39267056/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com