我正在使用Python和Kivy编写一个应用程序。我有一个函数可以绘制图像并将其导出为 png。我正在尝试使用该图像并将其作为 BLOB 保存在 sql 数据库中。
我尝试采取的方法是使用 BytesIO 将 png 转换为流,然后将此值(字符串)放入一个变量中,然后我可以将其发送到数据库。
我遇到的问题是,在"本地"函数中,我可以将 png 对象转换为流并打印它,但是当我尝试在函数外部打印相同的变量时,它返回空。
任何见解的帮助将不胜感激!我认为这是因为我正在使用函数的内存来转换 png>IO,而离开函数时它不喜欢它。或者,如果您有更好的解决方案,我都会听到。
def savevar(self):
global driversig
data = io.BytesIO(open("B.png","r+b").read())
test = (data.getvalue())
#i've also tried wrapping this in a str() but getvalue() is a string so shouldn't matter?
driversig = test
print(driversig)
#this prints fine.
当我尝试print(driversig)
函数之外时,它返回空
我也试过print(str(driversig))
我的全局变量为空。driversig = ''
以防万一你想知道。打印时也没有收到任何错误
所以我想出了问题:
driversig = ''
是全球性
def savevar(self):
global driversig
data = open("B.png","r+b").read()
test = (data.getvalue())
driversig = str(test)
# ^^ this *change* is now for the local variable and is not effecting the global variable
print(driversig)
# ^^ hence why this prints correctly
全局变量driversig
仍然是一个空字符串,我正在尝试调用此本地driversig
,它全局包含字节(作为字符串);但实际上我正在调用emtpy全局变量。
对不起,伙计们,谢谢!