2016-03-31 14 views
1
@staticmethod 
def next_group_id(): 
    cursor = connections['ips4'].cursor() 
    cursor.execute(Ips4Manager.SQL_GET_ALL_GROUP_IDS) 
    row = cursor.fetchall() 
    if row is not None: 
     string_num = str(row) 
     max_number = max(string_num) 
     print max_number 
    else: 
     logger.debug("cannot determine next group id") 
     return False 
outputs : (8L,) 

文字列に変換する最も効率的な方法は何ですか?
私はPythonで何か助けていただければ幸いです。長い文字列をPythonに変換する

+0

私はmax()で最大数を引いて、それをintに変換しようとすると(8L、(6L、)、(6L、)、(8L、)) Lが基数10ではないというエラーが表示されます。 – user5601513

+0

str(int(row [0]))やstr(row [0])のようなものを試しましたか? str((8L、)[0])は8を生成します。応答はタプルのように見えます。 –

+1

あなたのコードが '(8L、)'をどのように出力しているのか分かりません。 'string_num'の' max'はたった一つの文字(文字列中の "最大"文字)です。 – Dunes

答えて

2

あなたが見ているのは、rowの情報が実際にはタプルのリストであるということです。これらのタプルのそれぞれには1人のメンバーがいます。

max(row)[0]を試してみてください。

この例を参照してください。ちょうどそれは、Python 2で動作することを示すために、

In [7]: row = [(1,), (2,), (8,)] 

In [8]: max(row) 
Out[8]: (8,) 

In [9]: print(max(row)[0]) 
8 

(Iは、Python 3を使用していますので、あなたはここにLを見ていない):SQLクエリより多くの情報を追加するには

Python 2.7.11 (default, Jan 9 2016, 15:47:04) 
[GCC 4.2.1 Compatible FreeBSD Clang 3.4.1 (tags/RELEASE_34/dot1-final 208032)] on freebsd10 
Type "help", "copyright", "credits" or "license" for more information. 
>>> row = [(1L,), (2L,), (8L,)] 
>>> max(row) 
(8L,) 
>>> print(max(row)[0]) 
8 
+0

あなたはPython 2でもLを見ません。 'long'の' str'はLを付けず、 'repr'だけが行います(' print'は 'str'を使います)。 – Dunes

関連する問題