У меня есть класс (который работает [или кажется]) для запуска 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