【问题标题】:python: tuple gets converted to list in mysql insert querypython:元组在mysql插入查询中转换为列表
【发布时间】:2017-03-27 16:52:19
【问题描述】:

我正在尝试使用 python 将元组插入到 mysql 表中,但是元组被转换为 mysql 表中的列表。

settings: {
      'AEROSPIKE_CONN_SETTINGS' : {
        'hosts': [ ('aerospike.qgraph-vpc.io', 3000) ],
        'policies': {
           'timeout': 3000
        }
      }
    }
db = MySQLdb.connect(host='localhost', user='test', passwd='abcd', db='testdb')
cursor = db.cursor(MySQLdb.cursors.DictCursor)
insert_query = '''INSERT INTO test_table (`settings`) VALUES ('{}')'''.format(json.dumps(settings))
cursor.execute(insert_query)
cursor.connection.commit()

执行上述代码后,数据按以下格式插入

settings:{ 
  "AEROSPIKE_CONN_SETTINGS": {
    "hosts": [["127.0.0.1", 3000]]
  }
}

应采用以下格式

settings:{ 
  "AEROSPIKE_CONN_SETTINGS": {
    "hosts": [("127.0.0.1", 3000)]
  } 
}

出了什么问题或如何以预期的格式插入。我正在读取其他 python 组件中 mysql 表中的设置以连接到 aerospike。

【问题讨论】:

  • 请看这个问题和答案:stackoverflow.com/questions/15721363/…
  • 这个问题与 Aerospike 无关。您存储 Aerospike 配置的事实只是间接的。我建议删除标签。如果 Aerospike 的 python 客户端拒绝使用列表而不是元组连接,则单独提出该问题。

标签: python mysql


【解决方案1】:

JSON 中没有元组之类的东西。

但是请注意,从 Python 代码的角度来看,列表和元组之间没有实际区别。让它转换就好了。

【讨论】:

  • 是的,它确实有所不同,而连接到 aerospike 元组是请求。从mysql读取后,我刚刚将列表转换回python代码中的元组。
猜你喜欢
  • 2017-02-03
  • 2020-05-08
  • 2010-12-25
  • 2012-10-01
  • 2011-08-31
  • 2011-07-27
  • 1970-01-01
  • 1970-01-01
  • 2021-02-25
相关资源
最近更新 更多