我想使用django在sql数据库中存储一个包含672个布尔值的变量。 我使用models.TextField来存储这个变量。我希望尽可能少地使用内存来减少处理时间,所以这是最好的方法还是有另一个存储这样的变量? 感谢
答案 0 :(得分:0)
我建议您按原样回答问题的方法是使用BitArray。
>>> from random import getrandbits
>>> def get_n_bools(n):
... count = 0
... while count < n:
... yield getrandbits(1)
... count += 1
>>> from bitarray import bitarray
>>> ba = bitarray()
>>> ba.extend(get_n_bools(672))
>>> ba.tobytes()
'\xdd#\xa4_N\xcb\x94\\\\Q\xf02\x13Ov\xf4\xee=Jw\xef\xcf\x9co\xac"\xa8\xab\x1bam\xc6W[\x94\x125B\x1e\x9a\x85|\xe7\x0eQ\xe2\x010\xf4\xad\xa4\r\xc1\xef6e\x0b\x9a\xbb\xb7\xa9\x83\xc3\xfa\xb1\xffUbu\xfe\x10\x8d\x16\xdcS\x808\x99\xc1CQ&N\xd0'
>>> getsizeof(ba.tobytes())
105
使用tobytes()
并将值存储在Django BinaryField。
您应该重新考虑是否有必要以这种方式存储值 - 也许您可以在codereview.stackexchange.com上发布您的代码以供审核,并获得有关您的计划设计的一些反馈。
另外,请考虑评论者提出的问题: