我相信我的函数有一些不正确的地方,但是我对python和函数仍然很陌生,而且我忽略了我的问题所在。在下面的代码中,我不向函数发送值,但是一旦函数读取了数据库,我希望它将值从数据库中提取回主程序中。我在函数中放置了一个print语句,以确保它从数据库中提取值,一切都正常工作。在主区域的函数调用之后,我复制并粘贴了相同的打印行,但是我得到了一个NameError: 'wins' is not defined
。这让我相信我没有正确地返回这些值?
#Python3
import pymysql
def read_db():
db = pymysql.connect(host='**********',user='**********',password='**********',db='**********')
cursor = db.cursor()
sql = "SELECT * FROM loot WHERE id = 1"
cursor.execute(sql)
results = cursor.fetchall()
for row in results:
wins = row[2]
skips = row[3]
lumber1 = row[4]
ore1 = row[5]
mercury1 = row[6]
db.commit()
db.close()
print ("Wins = ",wins," Skips = ",skips," Lumber = ",lumber1," Ore = ",ore1," Mercury = ",mercury1)
return (wins, skips, lumber1, ore1, mercury1)
read_db()
print ("Wins = ",wins," Skips = ",skips," Lumber = ",lumber1," Ore = ",ore1," Mercury = ",mercury1)
发布于 2017-04-04 16:18:01
只执行read_db()
会导致返回值被抛出。您需要将返回值赋值给变量:
wins, skips, lumber, ore = read_db()
返回一个名为wins
的变量并不意味着wins
变量将在您调用read_db()
的作用域中可用。您需要显式地分配返回值。
https://stackoverflow.com/questions/43212537
复制相似问题