使用常量作为主机/IP操作InfluxDB失败但字符串可行,是什么原因?
问题根因
你的代码存在语法使用错误:在给host参数传值时,将常量名HOST_ADDRESS用单引号包裹,导致Python没有将其识别为你提前定义的常量,而是把它当成了普通字符串"HOST_ADDRESS"处理,程序自然无法解析这个不存在的主机地址,进而触发连接报错。
你提到的「两种写法下读取数据都正常」和传入常量/字面量的特性无关,大概率是你写的读取逻辑没有犯同样的变量加引号的错误。
修正方案
去掉host参数中HOST_ADDRESS外层的引号,直接引用常量即可,修正后代码如下:
HOST_ADDRESS = '149.212.118.123' PORT = 8086 def influx_write_dict(data_dict, database_name): client = InfluxDBClient(host=HOST_ADDRESS, port=PORT, username="InfluxDB", password="password") client.switch_database(database_name) print("Return code for influx write:", client.write_points([data_dict]))
补充说明
Python中向接口传入提前定义的字符串常量和直接传入字面量字符串没有任何底层差异,只要你正确引用变量、不要误将变量名用引号包裹转为字符串,两者运行效果完全一致。
内容的提问来源于stack exchange,提问作者Ruben
相关产品推荐
相关产品推荐

