Python 3--PyMySQLドライバMySQLデータベース接続
8016 ワード
PyMySQLとは?
PyMySQLはPython 3.xバージョンでMySQLサーバに接続するためのライブラリで、Python 2ではmysqldbを使用します.
PyMySQLはPythonデータベースAPI v 2.0仕様に従い、pure-Python MySQLクライアントライブラリを含む.
PyMySQLインストール
PyMySQLを使用する前に、PyMySQLがインストールされていることを確認する必要があります.
PyMySQLダウンロードアドレス:https://github.com/PyMySQL/PyMySQL.
Windowsシステムは直接上のリンクを通じてフォルダに解凍してコンソールで命令を使用します
注意:コンソール(cmd)で解凍ファイルディレクトリに入る必要があります.このディレクトリにはsetup.pyというファイルが表示されます.
まだインストールされていない場合は、次のコマンドを使用して最新版のPyMySQLをインストールできます.
システムがpipコマンドをサポートしていない場合は、以下の方法でインストールできます.
1、gitコマンドを使用してインストールパッケージのインストールをダウンロードします(手動でダウンロードすることもできます):
2、バージョン番号を設定する必要がある場合は、curlコマンドを使用してインストールできます.
注意:上記のモジュールをインストールするroot権限があることを確認してください.
インストール中に「ImportError:No module named setuptools」というエラーメッセージが表示される可能性があります.setuptoolsをインストールしていないので、アクセスできます.https://pypi.python.org/pypi/setuptools 各システムのインストール方法を見つけます.
Linuxシステムのインストール例:
データベース接続
データベースに接続する前に、次のことを確認してください.データベースTEstdBを作成しました. TEstdBデータベースでテーブルEMPLOYE を作成しました. EMPLOYE表フィールドはFIRST_NAME, LAST_NAME、AGE、SEX、INCOME. 接続データベースTEstdBで使用するユーザー名は「testuser」、パスワードは「test 123」で、rootユーザー名とそのパスワードを自分で設定または直接使用することができます.Mysqlデータベースユーザーの許可はGrantコマンドを使用してください. あなたのマシンにPython MySQLdbモジュールがインストールされています.
例:
次の例はMysqlのTEstdBデータベースをリンクします.
インスタンス(Python 3.0+)
以上のスクリプトを実行すると、次のように出力されます.
データベーステーブルの作成
データベース接続が存在する場合、execute()メソッドを使用してデータベースのテーブルを作成できます.次のようにテーブルEMPLOYEを作成します.
インスタンス(Python 3.0+)
データベース挿入アクション
次の例では、SQL INSERT文を実行してテーブルEMPLOYEにレコードを挿入します.
インスタンス(Python 3.0+)
以上の例は、以下のように書くこともできる.
インスタンス(Python 3.0+)
次のコードは、変数を使用してSQL文にパラメータを渡します.
データベース・クエリー・アクション
PythonクエリMysqlはfetchone()メソッドを使用して単一のデータを取得し、fetchall()メソッドを使用して複数のデータを取得します.
fetchone():このメソッドは、次のクエリー結果セットを取得します.結果セットはオブジェクトfetchall()です.すべての戻り結果行を受信します.rowcount:これは読み取り専用属性で、execute()メソッドを実行した後に影響する行数を返します.
例:
EMPLOYEテーブルのsalary(給与)フィールドが1000より大きいすべてのデータを問い合せます.
インスタンス(Python 3.0+)
以上のスクリプトの実行結果は次のとおりです.
データベース更新アクション
更新操作はデータテーブルのデータを更新するために使用され、次の例ではTEstdBテーブルのSEXが'M'のAGE>フィールドを1インクリメントします.
インスタンス(Python 3.0+)
アクションの削除
削除アクションは、データテーブルのデータを削除するために使用されます.次の例では、データテーブルEMPLOYEの>AGEが20より大きいすべてのデータを削除することを示します.
インスタンス(Python 3.0+)
トランザクションの実行
トランザクション・メカニズムは、データの一貫性を確保します.トランザクションには、原子性、一貫性、独立性、持続性の4つのプロパティがあります.この4つの属性は一般にACID特性と呼ばれる.原子性(atomicity).1つのトランザクションは分割できない作業単位であり、トランザクションに含まれる操作はすべて行うか、しないかのいずれかです. コンシステンシ(consistency).トランザクションは、データベースを1つのコンシステンシ状態から別のコンシステンシ状態に変更する必要があります.一致性は原子性と密接に関連している. 隔離性(isolation).1つのトランザクションの実行は、他のトランザクションに干渉されてはいけません.すなわち、1つのトランザクション内部の操作および使用されるデータは、同時実行される他のトランザクションから分離され、同時実行される各トランザクション間で相互に干渉することはできません. 持続性(durability).持続性は永続性(permanence)とも呼ばれ、トランザクションがコミットされると、データベース内のデータの変更が永続的であるべきであることを意味します.次の他の操作や障害は、それに影響を与えるべきではありません.
Python DB API 2.0のトランザクションは、commitまたはrollbackの2つの方法を提供します.
≪インスタンス|Instance|emdw≫
インスタンス(Python 3.0+)
トランザクションをサポートするデータベースの場合、Pythonデータベースのプログラミングでは、カーソルが確立されると、ステルス・データベース・トランザクションが自動的に開始されます.
commit()メソッドカーソルのすべての更新操作、rollback()メソッドは現在のカーソルのすべての操作をロールバックします.それぞれの方法で新しいトランザクションが開始されました.テキストリンク:http://www.runoob.com/python3/python3-mysql.html
PyMySQLはPython 3.xバージョンでMySQLサーバに接続するためのライブラリで、Python 2ではmysqldbを使用します.
PyMySQLはPythonデータベースAPI v 2.0仕様に従い、pure-Python MySQLクライアントライブラリを含む.
PyMySQLインストール
PyMySQLを使用する前に、PyMySQLがインストールされていることを確認する必要があります.
PyMySQLダウンロードアドレス:https://github.com/PyMySQL/PyMySQL.
Windowsシステムは直接上のリンクを通じてフォルダに解凍してコンソールで命令を使用します
注意:コンソール(cmd)で解凍ファイルディレクトリに入る必要があります.このディレクトリにはsetup.pyというファイルが表示されます.
python setup.py install
まだインストールされていない場合は、次のコマンドを使用して最新版のPyMySQLをインストールできます.
$ pip3 install PyMySQL
システムがpipコマンドをサポートしていない場合は、以下の方法でインストールできます.
1、gitコマンドを使用してインストールパッケージのインストールをダウンロードします(手動でダウンロードすることもできます):
$ git clone https://github.com/PyMySQL/PyMySQL
$ cd PyMySQL/
$ python3 setup.py install
2、バージョン番号を設定する必要がある場合は、curlコマンドを使用してインストールできます.
$ # X.X PyMySQL
$ curl -L https://github.com/PyMySQL/PyMySQL/tarball/pymysql-X.X | tar xz
$ cd PyMySQL*
$ python3 setup.py install
$ # PyMySQL*
注意:上記のモジュールをインストールするroot権限があることを確認してください.
インストール中に「ImportError:No module named setuptools」というエラーメッセージが表示される可能性があります.setuptoolsをインストールしていないので、アクセスできます.https://pypi.python.org/pypi/setuptools 各システムのインストール方法を見つけます.
Linuxシステムのインストール例:
$ wget https://bootstrap.pypa.io/ez_setup.py
$ python3 ez_setup.py
データベース接続
データベースに接続する前に、次のことを確認してください.
例:
次の例はMysqlのTEstdBデータベースをリンクします.
インスタンス(Python 3.0+)
#!/usr/bin/python3
import pymysql
#
db = pymysql.connect("localhost","testuser","test123","TESTDB" )
# cursor() cursor
cursor = db.cursor()
# execute() SQL
cursor.execute("SELECT VERSION()")
# fetchone() .
data = cursor.fetchone()
print ("Database version : %s " % data)
#
db.close()
以上のスクリプトを実行すると、次のように出力されます.
Database version : 5.5.20-log
データベーステーブルの作成
データベース接続が存在する場合、execute()メソッドを使用してデータベースのテーブルを作成できます.次のようにテーブルEMPLOYEを作成します.
インスタンス(Python 3.0+)
#!/usr/bin/python3
import pymysql
#
db = pymysql.connect("localhost","testuser","test123","TESTDB" )
# cursor() cursor
cursor = db.cursor()
# execute() SQL,
cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")
#
sql = """CREATE TABLE EMPLOYEE (
FIRST_NAME CHAR(20) NOT NULL,
LAST_NAME CHAR(20),
AGE INT,
SEX CHAR(1),
INCOME FLOAT )"""
cursor.execute(sql)
#
db.close()
データベース挿入アクション
次の例では、SQL INSERT文を実行してテーブルEMPLOYEにレコードを挿入します.
インスタンス(Python 3.0+)
#!/usr/bin/python3
import pymysql
#
db = pymysql.connect("localhost","testuser","test123","TESTDB" )
# cursor()
cursor = db.cursor()
# SQL
sql = """INSERT INTO EMPLOYEE(FIRST_NAME,
LAST_NAME, AGE, SEX, INCOME)
VALUES ('Mac', 'Mohan', 20, 'M', 2000)"""
try:
# sql
cursor.execute(sql)
#
db.commit()
except:
#
db.rollback()
#
db.close()
以上の例は、以下のように書くこともできる.
インスタンス(Python 3.0+)
#!/usr/bin/python3
import pymysql
#
db = pymysql.connect("localhost","testuser","test123","TESTDB" )
# cursor()
cursor = db.cursor()
# SQL
sql = "INSERT INTO EMPLOYEE(FIRST_NAME, \
LAST_NAME, AGE, SEX, INCOME) \
VALUES (%s, %s, %s, %s, %s )" % \
('Mac', 'Mohan', 20, 'M', 2000)
try:
# sql
cursor.execute(sql)
# sql
db.commit()
except:
#
db.rollback()
#
db.close()
次のコードは、変数を使用してSQL文にパラメータを渡します.
..................................
user_id = "test123"
password = "password"
con.execute('insert into Login values( %s, %s)' % \
(user_id, password))
..................................
データベース・クエリー・アクション
PythonクエリMysqlはfetchone()メソッドを使用して単一のデータを取得し、fetchall()メソッドを使用して複数のデータを取得します.
fetchone():このメソッドは、次のクエリー結果セットを取得します.結果セットはオブジェクトfetchall()です.すべての戻り結果行を受信します.rowcount:これは読み取り専用属性で、execute()メソッドを実行した後に影響する行数を返します.
例:
EMPLOYEテーブルのsalary(給与)フィールドが1000より大きいすべてのデータを問い合せます.
インスタンス(Python 3.0+)
#!/usr/bin/python3
import pymysql
#
db = pymysql.connect("localhost","testuser","test123","TESTDB" )
# cursor()
cursor = db.cursor()
# SQL
sql = "SELECT * FROM EMPLOYEE \
WHERE INCOME > %s" % (1000)
try:
# SQL
cursor.execute(sql)
#
results = cursor.fetchall()
for row in results:
fname = row[0]
lname = row[1]
age = row[2]
sex = row[3]
income = row[4]
#
print ("fname=%s,lname=%s,age=%s,sex=%s,income=%s" % \
(fname, lname, age, sex, income ))
except:
print ("Error: unable to fetch data")
#
db.close()
以上のスクリプトの実行結果は次のとおりです.
fname=Mac, lname=Mohan, age=20, sex=M, income=2000
データベース更新アクション
更新操作はデータテーブルのデータを更新するために使用され、次の例ではTEstdBテーブルのSEXが'M'のAGE>フィールドを1インクリメントします.
インスタンス(Python 3.0+)
#!/usr/bin/python3
import pymysql
#
db = pymysql.connect("localhost","testuser","test123","TESTDB" )
# cursor()
cursor = db.cursor()
# SQL
sql = "UPDATE EMPLOYEE SET AGE = AGE + 1 WHERE SEX = '%c'" % ('M')
try:
# SQL
cursor.execute(sql)
#
db.commit()
except:
#
db.rollback()
#
db.close()
アクションの削除
削除アクションは、データテーブルのデータを削除するために使用されます.次の例では、データテーブルEMPLOYEの>AGEが20より大きいすべてのデータを削除することを示します.
インスタンス(Python 3.0+)
#!/usr/bin/python3
import pymysql
#
db = pymysql.connect("localhost","testuser","test123","TESTDB" )
# cursor()
cursor = db.cursor()
# SQL
sql = "DELETE FROM EMPLOYEE WHERE AGE > %s" % (20)
try:
# SQL
cursor.execute(sql)
#
db.commit()
except:
#
db.rollback()
#
db.close()
トランザクションの実行
トランザクション・メカニズムは、データの一貫性を確保します.トランザクションには、原子性、一貫性、独立性、持続性の4つのプロパティがあります.この4つの属性は一般にACID特性と呼ばれる.
Python DB API 2.0のトランザクションは、commitまたはrollbackの2つの方法を提供します.
≪インスタンス|Instance|emdw≫
インスタンス(Python 3.0+)
# SQL
sql = "DELETE FROM EMPLOYEE WHERE AGE > %s" % (20)
try:
# SQL
cursor.execute(sql)
#
db.commit()
except:
#
db.rollback()
トランザクションをサポートするデータベースの場合、Pythonデータベースのプログラミングでは、カーソルが確立されると、ステルス・データベース・トランザクションが自動的に開始されます.
commit()メソッドカーソルのすべての更新操作、rollback()メソッドは現在のカーソルのすべての操作をロールバックします.それぞれの方法で新しいトランザクションが開始されました.テキストリンク:http://www.runoob.com/python3/python3-mysql.html