我有一个类(工作[或似乎])来运行SQL查询。代码如下。如果我从对象继承并且不使用super,它可以正常工作。
我正在学习从超类中插入方法,所以我认为我会让我的类标题看起来像这样
class database_connector(Connection)
并在 init 中添加超级调用,如此
super().__init__()
然而,我得到了
TypeError: function() argument 1 must be code, not str
我试过
super(database_connector, self).__init__()
在阅读StackOverFlow中的其他内容后,我现在仍然得到
TypeError: function() argument 1 must be code, not str
我预计这项工作将允许我从pymysql.Connection调用更多方法。
这是我的班级
from pymysql import Connection
# set up default values for database connector
class database_connector(Connection):
def __init__(self, host=None, db=None, user=None, passwd=None):
super(database_connector, self).__init__()
if host is None:
self.host = "mysql_host_ip"
else:
self.host = host
if db is None:
self.db = "fred_db"
else:
self.db = db
if user is None:
self.user = "fred"
else:
self.user = user
if passwd is None:
self.passwd = "fredspasswd"
else:
self.passwd = passwd
self.this_database = (Connection(host=self.host,
user=self.user,
passwd=self.passwd,
db=self.db))
self.cur = self.this_database.cursor()
def my_sql_run_this_sql(self, sql_to_run=None):
if sql_to_run is None:
data = self.cur.execute("SELECT * FROM person")
else:
data = self.cur.execute(sql_to_run)
data = []
for row in self.cur.fetchall():
data.append(row)
self.this_database.close()
return data