[英]Android Studio - Abort Firebase Firestore document write after time limit
[英]Firestore write to document invalid type errors for numpy
我有一本包含 1000 多个字段的字典,我正试图将其作为文档写入 Firestore。 但是,我不断收到无效类型错误,如下所示:
'Cannot convert to a Firestore Value', 3, 'Invalid type', <class 'numpy.int64'>
'Cannot convert to a Firestore Value', False, 'Invalid type', <class 'numpy.bool_'>
我的大部分字段都属于这些 numpy 类型。 我是 Firestore 的新手,所以我不确定我是否遗漏了一些简单的东西,或者我是否必须转换我的所有字段? Firestore python 库是否不允许 numpy 类型? 我在主字典中有多个嵌套字典,因此将所有内容转换为不同类型并不容易。
这是我用来写入 Firestore 的 python 代码:
firestore_db.collection("collection_name").document("doc_name").set(allVarsDict)
这是字典的示例:
{
'price_date': '2020-08-22 00:00:00',
'time_ms': 1598054400000,
'price1min': 11526.32,
'price_open1min': 11529.99,
'volume1min': 12.75662516,
'price': 11526.32,
'price1min_dict': {
'price_date': '2020-08-22 00:00:00',
'ms': 1598054400000,
'50ma': 11525.190199999994,
'128ma': 11547.188046874997,
'200ma': 11569.5485,
'200ema': 11552.031164880687,
'heightPer': 0.0013139635732870457,
'pinbarPer': 0.24224422442245286,
'hammer': True,
'star': False,
'green': False,
'pinbar': True,
'height': True,
'rsi': 49.58870472682622,
'Mflow': -3.0986389827593954,
'cmf': -0.39267912421581946,
'obv': 12.09637204,
'stoch': 85.27999999999884,
},
谢谢你的帮助!
NumPy 表示数据的方式略有不同。 换句话说, numpy.int64
与int
不同,因此不是 Firestore 中可接受的数据类型之一
有很多方法可以克服这个问题。 根据您获取数据的方式,可能会有更有效的方法。 但是,根据提供的信息,这是我可以建议的唯一方法,这似乎对我有用,其中涉及使用ndarray.item方法:
def np_to_fs(og_dict):
for k, v in og_dcit.items():
if type(v).__module__ == 'numpy':
og_dict[k] = v.item()
此 function 将转换源自 numpy 的类型值的所有实例,并将它们替换为 python-native 变量。
请记住,由于您有嵌套的字典,因此您必须多次调用np_to_fs
,每个字典一次,并且 function 将就地替换这些值。
希望这可以帮助:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.