2016-04-06 4 views
0

私はPythonを初めて使いました。強く型付けされた変数の欠如が非常に混乱していることがわかりました。 (私はC、Java、VBなどによく慣れています)Python:MySQLCursor.execute()のアイテムをstd :: stringに変換するには?

私はKodiのアドオンを開発しています。

class MyAddon(pyxbmct.AddonDialogWindow): 

    def somefunc(self): 

     #this is a GUI scrollable list 
     self.list = pyxbmct.List() 

     query = ("SELECT category FROM test") 
     #initialize _connection variable 
     self.mysql_connect() 
     cursor = self._connection.cursor() 
     for category in cursor.execute(query, multi=True): 
      self.list.addItem(category) 

は、私は次のエラーを取得する:

self.list.addItem(category) 

TypeError: Failed to convert to input type to either a std::string or a p.XBMCAddon::xbmcgui::ListItem 

MySQL documentation MySQLCusor.execute()メソッドによって返された反復可能な内の項目の戻り値のデータ型を指定しません。 (メソッドがPythonで戻り値の型をも持っていないときにメソッドが特定の型のオブジェクトを返すのはどういうことでしょうか?)

pyxbmct.List.addItemメソッドは、文字列またはlistItemオブジェクトをパラメータとして取ります。 API documentation

誰でも正しい方向に向けることができますか?

P .:ここではstrオブジェクトが機能しません。 pyxbmct.List.addItem()以来

答えて

2

は文字列を受け取り、そして、あなたは、クエリによって返されたタプルの最初の要素を取ることができる必要があり、データベース内のcategoryフィールドがテキスト(CHAR、VARCHARなど)であると仮定すると(にバインド変数category)とaddItem()にそれを渡す:あなたはcategoryの値をプリントアウトした場合

for category in cursor.execute(query, multi=True): 
     self.list.addItem(category[0]) 

あなたはそれがタプルであることがわかります。

関連する問題