PyMySQLモジュールの使用
クイック使用
https://github.com/PyMySQL/PyMySQL
公式チュートリアル
調査に備える
きほんしよう
辞書形式のデータを返す
追加削除変更操作
増加
データ挿入に失敗したロールバック削除操作を実行する場合、前の操作をコミットしたくない場合はrollback()ロールバックを使用してキャンセル操作をロールバックできます.
挿入されたデータのIDを取得します(関連操作で使用されます)
一括実行
削除
改める
調べる
単一データの問合せ
ステップアップ法
クエリー後にカーソルが移動し、次回のクエリーでは前回クエリーしたデータの後に新しいクエリーが開始されます
エラー処理
異常
説明
Warning
重大な警告がある場合にトリガーされます.たとえば、挿入データが切断されているなどです.
Error
警告以外のすべてのエラークラス.
InterfaceError
データベースインタフェースモジュール自体のエラー(データベースのエラーではなく)が発生した場合にトリガーされます.
DatabaseError
データベースに関連するエラーが発生するとトリガーされます.
DataError
データ処理時のエラーが発生した場合にトリガーされます.たとえば、ゼロエラーの除去、データオーバーレンジなどです.
OperationalError
ユーザー制御ではなく、データベースの操作中に発生したエラーを指します.たとえば、接続が予期せぬ切断、データベース名が見つからない、トランザクションが失敗した、メモリ割り当てエラーなどの操作データベースで発生したエラーです.
IntegrityError
外部キーのチェックに失敗したなど、整合性に関連するエラー.
InternalError
カーソルが無効になったり、トランザクションの同期に失敗したりするなど、データベースの内部エラー.
ProgrammingError
データテーブルが見つからなかったり、存在しなかったり、SQL文構文エラー、パラメータ数エラーなどのプログラムエラー.
NotSupportedError
エラーはサポートされていません.データベースでサポートされていない関数やAPIなどが使用されています.たとえば、接続オブジェクトで.rollback()関数を使用しますが、データベースはトランザクションをサポートしていません.または、トランザクションが閉じています.
https://github.com/PyMySQL/PyMySQL
公式チュートリアル
import pymysql.cursors
#
connection = pymysql.connect(host='localhost',
user='user',
password='passwd',
db='db',
charset='utf8mb4',
cursorclass=pymysql.cursors.DictCursor)
try:
with connection.cursor() as cursor:
#
sql = "INSERT INTO `users` (`email`, `password`) VALUES (%s, %s)"
cursor.execute(sql, ('[email protected]', 'very-secret'))
connection.commit()
with connection.cursor() as cursor:
#
sql = "SELECT `id`, `password` FROM `users` WHERE `email`=%s"
cursor.execute(sql, ('[email protected]',))
result = cursor.fetchone()
print(result)
finally:
connection.close()
調査に備える
# SQL ,
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
# sql
cursor.execute(sql, (username, pwd))
#
conn.commit()
#
ret = cursor.fetchone()
#
ret = cursor.fetchall()
#
conn.rollback()
きほんしよう
#
import pymysql
username = input(" : ")
pwd = input(" : ")
#
conn = pymysql.connect(host="localhost",
port=3306,
database="userinfo",
user='root',
password="123456",
charset="utf8"
)
# SQL
cursor = conn.cursor()
# SQL
sql = "select * from info WHERE username=%s and password=%s;"
# sql , pymysql SQL
cursor.execute(sql, (username, pwd))
#
cursor.close()
#
conn.close()
辞書形式のデータを返す
# SQL ,
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
追加削除変更操作
増加
import pymysql
#
username = input(" : ")
pwd = input(" : ")
#
conn = pymysql.connect(host="localhost",
port=3306,
database="userinfo",
user='root',
password="123456",
charset="utf8"
)
# SQL
cursor = conn.cursor()
# sql
sql = "insert into info (username, password) VALUES (%s, %s);"
# sql
cursor.execute(sql, [username, pwd])
#
conn.commit()
#
cursor.close()
conn.close()
データ挿入に失敗したロールバック削除操作を実行する場合、前の操作をコミットしたくない場合はrollback()ロールバックを使用してキャンセル操作をロールバックできます.
import pymysql
#
username = input(" : ")
pwd = input(" : ")
#
conn = pymysql.connect(host="localhost",
port=3306,
database="userinfo",
user='root',
password="123456",
charset="utf8"
)
# SQL
cursor = conn.cursor()
# sql
sql = "insert into info (username, password) VALUES (%s, %s);"
# sql
# pymysql SQL ( , )
try:
cursor.execute(sql, [username, pwd])
#
conn.commit()
except Exception as e:
print(" :", str(e))
conn.rollback() #
#
cursor.close()
conn.close()
挿入されたデータのIDを取得します(関連操作で使用されます)
import pymysql
#
username = input(" : ")
pwd = input(" : ")
#
conn = pymysql.connect(host="localhost",
port=3306,
database="userinfo",
user='root',
password="123456",
charset="utf8"
)
# SQL
cursor = conn.cursor()
# sql
sql = "insert into info (username, password) VALUES (%s,%s);"
# sql
cursor.execute(sql, [username, pwd])
#
conn.commit()
# , ID
last_id = cursor.lastrowid
#
cursor.close()
conn.close()
一括実行
import pymysql
#
conn = pymysql.connect(host="localhost",
port=3306,
database="userinfo",
user='root',
password="123456",
charset="utf8"
)
#
cursor = conn.cursor()
data = [(" ", 123456), (" ", 123456), (" ", 123456)]
# sql
sql = "insert into info(username, password) VALUES (%s, %s)"
#
cursor.executemany(sql, data)
#
conn.commit()
#
cursor.close()
conn.close()
削除
import pymysql
#
conn = pymysql.connect(host="localhost",
port=3306,
database="userinfo",
user='root',
password="123456",
charset="utf8"
)
#
cursor = conn.cursor()
# sql
sql = "delete from info where id=%s"
# SQL
cursor.execute(sql, [1])
#
conn.commit()
#
cursor.close()
conn.close()
改める
import pymysql
#
conn = pymysql.connect(host="localhost",
port=3306,
database="userinfo",
user='root',
password="123456",
charset="utf8"
)
# SQL
cursor = conn.cursor()
# sql
sql = "update info set password=%s where id=%s"
password = "654321"
id = 2
cursor.execute(sql, [password, id])
conn.commit()
cursor.close()
conn.close()
調べる
単一データの問合せ
import pymysql
#
conn = pymysql.connect(host="localhost",
port=3306,
database="userinfo",
user='root',
password="123456",
charset="utf8"
)
# SQL ,
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
sql = "select * from info"
#
cursor.execute(sql)
#
ret = cursor.fetchone()
#
ret = cursor.fetchall()
#
cursor.close()
conn.close()
ステップアップ法
クエリー後にカーソルが移動し、次回のクエリーでは前回クエリーしたデータの後に新しいクエリーが開始されます
#
cursor.fetchmany(3)
# 1
cursor.scroll(1, mode="absolute")
# ( ) 1
cursor.scroll(1, mode="relative")
エラー処理
異常
説明
Warning
重大な警告がある場合にトリガーされます.たとえば、挿入データが切断されているなどです.
Error
警告以外のすべてのエラークラス.
InterfaceError
データベースインタフェースモジュール自体のエラー(データベースのエラーではなく)が発生した場合にトリガーされます.
DatabaseError
データベースに関連するエラーが発生するとトリガーされます.
DataError
データ処理時のエラーが発生した場合にトリガーされます.たとえば、ゼロエラーの除去、データオーバーレンジなどです.
OperationalError
ユーザー制御ではなく、データベースの操作中に発生したエラーを指します.たとえば、接続が予期せぬ切断、データベース名が見つからない、トランザクションが失敗した、メモリ割り当てエラーなどの操作データベースで発生したエラーです.
IntegrityError
外部キーのチェックに失敗したなど、整合性に関連するエラー.
InternalError
カーソルが無効になったり、トランザクションの同期に失敗したりするなど、データベースの内部エラー.
ProgrammingError
データテーブルが見つからなかったり、存在しなかったり、SQL文構文エラー、パラメータ数エラーなどのプログラムエラー.
NotSupportedError
エラーはサポートされていません.データベースでサポートされていない関数やAPIなどが使用されています.たとえば、接続オブジェクトで.rollback()関数を使用しますが、データベースはトランザクションをサポートしていません.または、トランザクションが閉じています.