Pul MySql数据库值到liststore - Python3和Mysql.connector

时间:2014-09-07 16:55:27

标签: python mysql python-3.x

相当陌生的python并寻求一些帮助以使其符合我的意愿。我正在开发一个小应用程序,它将使用数据库来填充各种组合框,这些组合框都链接到各种liststore对象。我可以从MySQL中提取数据,但在尝试将值插入列表存储时,它们都崩溃了。我要么结束了:

ValueError: row sequence has the incorrect number of elements

我的liststore对象是针对单行gchararray配置的

我的代码如下所示:

mysqldb = mysql.connector.connect(**mysql_config)
cnx = mysqldb.cursor()
cnx.execute("SHOW TABLES")

for (table_name, ) in cnx:
    dblist.append(''.join(table_name))

for i in range(len(dblist)):
    self.list_customers.append(list(dblist[i]))

cell = Gtk.CellRendererText()
self.combo_systems.pack_start(cell, False)
self.combo_systems.set_active(0)

如果我插入一个完整性检查:

dblist = [['1'], ['2'], ['3']]

之前

for i in range(len(dbslit)):
    self.list_customers.append(list(dblist[i]))

它工作正常。

1 个答案:

答案 0 :(得分:1)

这将采用与[['1'], ['2'], ['3']]相同的格式:

cnx = mysqldb.cursor()
cnx.execute("SHOW TABLES")

tables = cnx.fetchall()   #  [('table1',), ('table2',), ...]
self.list_customers = [list(rec) for rec in tables]
...

或只是

self.list_customers = [list(rec) for rec in cnx.fetchall()]

虽然你可能只是

self.list_customers = cnx.fetchall()

如果gtx界面没有坚持列表列表..