我不知道爲什麼我有這個錯誤。請賜教。這裏是我的代碼: 文件名:sqlfunc.pyPhyton3錯誤>>未定義全局名稱'self'
from sqlalchemy import create_engine
class SQL:
def __init__(self):
self.connection_string = ''
self.sql = ''
def exec_nonquery(connection_string, sql):
self.connection_string = connection_string
self.sql = sql
self.__connection = self.__mydb(self.connection_string)
self.__transaction = self.__connection.begin()
try:
self.__connection.execute(self.sql).fetchall()
self.__transaction.commit()
except:
self.__transaction.rollback()
raise
_connection.close()
def exec_query(self, connection_string, sql):
self.connection_string = connection_string
self.sql = sql
self.__connection = self.__mydb(self.connection_string)
self.__result = None
self.query_result = []
try:
self.__result = self.__connection.execute(sql)
self.query_result = list(self.__result)
except:
raise
self.__connection.close()
return self.query_result
現在,我想:
from sqlfunc import SQL
SQL.exec_nonquery('mssql+pyodbc://scott:[email protected]','select * from table1')
,我得到這個錯誤:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "./sqlfunc.py", line 25, in exec_nonquery
self.connection_string = connection_string
NameError: global name 'self' is not defined
有什麼我做錯了或丟失?
我改變exec_nonquery到
def exec_nonquery(self, connection_string, sql)
但它使我這個錯誤: 「有什麼我做錯了或丟失」
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: exec_nonquery() missing 1 required positional argument: 'sql'
你想在這裏做什麼,使用'SQL.exec_nonquery()'作爲類方法?您沒有該方法的「自我」參數,也不會有這樣的參數,因爲沒有* instance *綁定到該參數。 –
你是否期望在這裏發生什麼?爲什麼不在連接字符串中再次傳入SQL *()*實例*,讓它處理連接字符串並調用'exec_nonquery)'*?你似乎還不知道類和實例是如何工作的。 –
是的,這就是爲什麼我試圖通過這裏來理解。 –