我想在class
函数中定义的sql_process()
函数中访问mycursor(sql_connect
数据类型)。
代码是:
def sql_connect():
print("In sql_connect function")
mydb = mysql.connector.connect(
host="localhost",
user="jarvis",
passwd="raspberry",
database="nGShelter"
)
mycursor = mydb.cursor() #type(mycursor) ---> class
return(mycursor)
def sql_process():
print("In sql_process function")
try:
sql_connect().execute("SHOW Tables")
for tables in mycursor:
print(tables)
except mysql.connector.Error as err:
print("Failed to open database: {}".format(err))
exit(1)
def main():
sql_connect()
sql_process()
##
if __name__ == '__main__':
sys.exit(main())
运行时发生错误
In sql_connect function
In sql_process function
In sql_connect function
Traceback (most recent call last):
File "/home/pi/Projects/json_mysql_post.py", line 42, in <module>
sys.exit(main())
File "/home/pi/Projects/json_mysql_post.py", line 38, in main
sql_process()
File "/home/pi/Projects/json_mysql_post.py", line 29, in sql_process
sql_connect().execute("SHOW Tables")
File "/usr/lib/python3/dist-packages/mysql/connector/cursor.py", line 526, in execute
if not self._connection:
ReferenceError: weakly-referenced object no longer exists
答案 0 :(得分:0)
class SQLOps:
def __init__(self):
print("In sql_connect function")
self.mydb = mysql.connector.connect(
host="localhost",
user="jarvis",
passwd="raspberry",
database="nGShelter"
)
self.mycursor = self.mydb.cursor()
def sql_process(self):
print("In sql_process function")
try:
self.mycursor.execute("SHOW Tables")
for tables in self.mycursor:
print(tables)
except mysql.connector.Error as err:
print("Failed to open database: {}".format(err))
exit(1)
def main():
sql = SQLOps()
sql.sql_process()