sql >> データベース >  >> RDS >> Mysql

PythonでMySQL形式で結果を印刷する

    外部ライブラリは必要ありません。列名とともにデータを出力します。列名が必要ない場合は、「columns」変数を持つすべての行を削除できます。

    sql = "SELECT * FROM someTable"
    cursor.execute(sql)
    conn.commit()
    results = cursor.fetchall()
    
    widths = []
    columns = []
    tavnit = '|'
    separator = '+' 
    
    for cd in cursor.description:
        widths.append(max(cd[2], len(cd[0])))
        columns.append(cd[0])
    
    for w in widths:
        tavnit += " %-"+"%ss |" % (w,)
        separator += '-'*w + '--+'
    
    print(separator)
    print(tavnit % tuple(columns))
    print(separator)
    for row in results:
        print(tavnit % row)
    print(separator)
    

    これが出力です:

    +--------+---------+---------------+------------+------------+
    | ip_log | user_id | type_id       | ip_address | time_stamp |
    +--------+---------+---------------+------------+------------+
    | 227    | 1       | session_login | 10.0.0.2   | 1358760386 |
    | 140    | 1       | session_login | 10.0.0.2   | 1358321825 |
    | 98     | 1       | session_login | 10.0.0.2   | 1358157588 |
    +--------+---------+---------------+------------+------------+
    

    魔法は各cursor.descriptionの3番目の列にあります 行(cd[2]と呼ばれます コード内)。この列は、最長値の文字数で長さを表します。したがって、表示される列のサイズを、それと列ヘッダー自体の長さの間の大きい方に設定します(max(cd[2], len(cd[0]))



    1. ADO.NETがT-SQLストアドプロシージャを呼び出すと、SqlTimeoutExceptionが発生します

    2. MariaDBでのサウンドの仕組み

    3. mysqlで列名descを使用できません

    4. MacにOracleInstantClientをインストールするにはどうすればよいですか?