MySQLのデータベース行タプルで整数に「L」サフィックスが付く理由とは?
MySQLの行タプルで整数に「L」が付く理由
MySQLで取得したデータベース行タプルの整数値に「L」という接尾辞(サフィックス)が付いている現象は、Pythonの仕様と深い関係があります。Python 2では、長整数(long型)リテラルを表すために、数値の末尾に「L」または「l」を付ける必要がありました。しかし、Python 3ではint型とlong型が統合され、単一のint型になったため、「L」や「l」を付ける必要はなくなりました。
Python 3での大きな数値の扱い方
Python 3.7では、接尾辞を一切使わずに、そのまま大きな数値を記述することができます。

ここで、あえて「L」や「l」を付けると、Python 3ではエラーが発生します。

Python 2での動作
一方、Python 2では「L」や「l」を付けてもエラーにはなりません。

以下は、エラーなく正常に出力された結果です。

まとめ:型の対応関係と実務上のポイント
つまり、Pythonのint型はC言語におけるlong型に相当します。さらに、Python 3のint型は、JavaのBigIntegerクラスのような役割を果たすと考えてよいでしょう。ただし、無限の精度を持つものと安易に想定することはできません。
このため、ユーザーがどれほど多くの値を入力するか事前に分からない場合でも、MySQLデータベースの行タプルに対して「l」や「L」の接尾辞を付けることで、非常に大きな数値を確実に扱うことができるのです。
注意: データベースにおいて接尾辞「L」または「l」を付けるのは、大きな数値を取得・表現するために使用されます。
-
MySQLエラー #1046「No database selected(データベースが選択されていません)」の原因と解決方法
MySQLエラー #1046 とは MySQLでテーブルを作成する際に、使用するデータベースを選択せずに作業を始めると、「ERROR 1046 (3D000): No database selected」というエラーが発生します。この記事では、エラーが起こる原因と、具体的な解決手順をわかりやすく解説します。 エラーが発生するケース まず、以下のようにMySQLを起動します。 正しいパスワードを入力すると、上記のようなコンソール画面が開きます。この状態で、データベースを何も選択せずにテーブルを作成してみましょう。 mysql> CREATE table TblUni -> ( -
-
PythonでMySQLデータベースへの挿入後にIDを取得する方法
はじめに PythonからMySQLデータベースへレコードを挿入する際、「今挿入したばかりのレコードのID(AUTO_INCREMENTで自動採番された値)をすぐに取得したい」というケースは非常によくあります。本記事では、pymysqlライブラリを使ってMySQLにデータを挿入し、その直後にIDを取得する具体的な手順を解説します。 前提条件 作業を始める前に、以下の環境が整っていることを確認してください。 MySQL 8.0.12 がインストールされていること Python 3.6.3(32ビット) がインストールされていること pipコマンドで pymysql がインストールされているこ