Python-data-access-python-mysql-insert-data

提供:Dev Guides
移動先:案内検索

Python MySQL-データの挿入

*INSERT INTO* ステートメントを使用して、MySQLの既存のテーブルに新しい行を追加できます。 この場合、テーブルの名前、列名、および値を(列名と同じ順序で)指定する必要があります。

構文

以下は、MySQLのINSERT INTOステートメントの構文です。

INSERT INTO TABLE_NAME (column1, column2,column3,...columnN)
VALUES (value1, value2, value3,...valueN);

次のクエリは、EMPLOYEEという名前のテーブルにレコードを挿入します。

INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME) VALUES ('
   Mac', 'Mohan', 20, 'M', 2000
);

SELECTステートメントを使用して、挿入操作後にテーブルのレコードを確認できます-

mysql> select * from Employee;
+------------+-----------+------+------+--------+
| FIRST_NAME | LAST_NAME | AGE  | SEX  | INCOME |
+------------+-----------+------+------+--------+
| Mac        | Mohan     | 20   | M    | 2000   |
+------------+-----------+------+------+--------+
1 row in set (0.00 sec)

列の名前を常に指定することは必須ではありません。テーブルの列と同じ順序でレコードの値を渡す場合、次のように列名なしでSELECTステートメントを実行できます-

INSERT INTO EMPLOYEE VALUES ('Mac', 'Mohan', 20, 'M', 2000);

Pythonを使用してMySQLテーブルにデータを挿入する

(カーソルオブジェクトで呼び出される)* execute()*メソッドは、パラメーターとしてクエリを受け取り、指定されたクエリを実行します。 データを挿入するには、MySQL INSERTステートメントをパラメーターとして渡す必要があります。

cursor.execute("""INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME)
   VALUES ('Mac', 'Mohan', 20, 'M', 2000)""")

Pythonを使用してMySQLのテーブルにデータを挿入するには-

  • mysql.connector パッケージをインポートします。
  • mysql.connector.connect() メソッドを使用して、ユーザー名、パスワード、ホスト(オプションのデフォルト:localhost)、およびデータベース(オプション)をパラメーターとして渡すことにより、接続オブジェクトを作成します。
  • 上記で作成した接続オブジェクトで cursor() メソッドを呼び出して、カーソルオブジェクトを作成します。
  • 次に、パラメータとして* execute()メソッドを渡して、 *_ INSERT_ ステートメントを実行します。

次の例では、SQL INSERTステートメントを実行して、レコードをEMPLOYEEテーブルに挿入します-

import mysql.connector

#establishing the connection
conn = mysql.connector.connect(
   user='root', password='password', host='127.0.0.1', database='mydb')

#Creating a cursor object using the cursor() method
cursor = conn.cursor()

# Preparing SQL query to INSERT a record into the database.
sql = """INSERT INTO EMPLOYEE(
   FIRST_NAME, LAST_NAME, AGE, SEX, INCOME)
   VALUES ('Mac', 'Mohan', 20, 'M', 2000)"""

try:
   # Executing the SQL command
   cursor.execute(sql)

   # Commit your changes in the database
   conn.commit()

except:
   # Rolling back in case of error
   conn.rollback()

# Closing the connection
conn.close()

値を動的に挿入する

また、MySQLの INSERT クエリで値の代わりに「%s」を使用して、以下に示すように値をリストとして渡すこともできます-

cursor.execute("""INSERT INTO EMPLOYEE VALUES ('Mac', 'Mohan', 20, 'M', 2000)""",
   ('Ramya', 'Ramapriya', 25, 'F', 5000))

次の例では、レコードをEmployeeテーブルに動的に挿入します。

import mysql.connector

#establishing the connection
conn = mysql.connector.connect(
   user='root', password='password', host='127.0.0.1', database='mydb')

#Creating a cursor object using the cursor() method
cursor = conn.cursor()

# Preparing SQL query to INSERT a record into the database.
insert_stmt = (
   "INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME)"
   "VALUES (%s, %s, %s, %s, %s)"
)
data = ('Ramya', 'Ramapriya', 25, 'F', 5000)

try:
   # Executing the SQL command
   cursor.execute(insert_stmt, data)

   # Commit your changes in the database
   conn.commit()

except:
   # Rolling back in case of error
   conn.rollback()

print("Data inserted")

# Closing the connection
conn.close()

出力

Data inserted