# -*- コーディング: UTF-8 -*-
import MySQLdb as mdb
import sys
#con をグローバル接続として設定します
con = mdb.connect('localhost', 'root', 'root', 'test');
with con :
#接続されたカーソルを取得します。カーソルを取得した後でのみ、さまざまな操作を実行できます。
cur = con.cursor()
#データ テーブルを作成します Writers(id,name)
cur.execute ( "CREATE TABLE IF NOT EXISTS
Writers(Id INT PRIMARY KEY AUTO_INCREMENT, Name VARCHAR(25))")
#以下の 5 つのデータが挿入されます
cur.execute("INSERT INTO Writers( Name) VALUES ('ジャック・ロンドン')")
cur.execute("INSERT INTO Writers(Name) VALUES('Honore de Balzac')")
cur.execute("INSERT INTO Writers(Name) VALUES ('ライオン・フォイヒトヴァンガー')")
cur.execute("作家(名前)の値に挿入('エミール・ゾラ')")
cur.execute("作家(名前)の値に挿入('トルーマン・カポーティ) ')" )
例 3、Python は slect を使用して mysql データを取得し、走査します
コードをコピー コードは次のとおりです:
# -*- コーディング: UTF-8 -*-
import MySQLdb as mdb
import sys
#mysql に接続し、接続されたオブジェクトを取得します
con = mdb.connect('localhost', 'root', 'root', 'test');
with con:
#それでも、最初のステップはクエリを実行するための接続されたカーソル オブジェクトを取得することです
cur = con.cursor()
#他の言語のクエリ関数と同様に、execute は実行ですPython のクエリ関数
cur.execute("SELECT * FROM Writers")
#fetchall 関数を使用して結果セット (多次元タプル) を行に格納します
rows = cur.fetchall()
#Traverse in sequence 結果セットでは、各要素がテーブル内のレコードであることがわかり、行内の行のタプル
として表示されます:
print row
コードをコピー コードは次のとおりです:
実行結果:
(1L, 'Jack London')
(2L、「オノーレ・ド・バルザック」)
(3L、「ライオン・フォイヒトヴァンガー」)
(4L、「エミール・ゾラ」)
(5L、「トルーマン・カポーティ」)
例 4. ディクショナリ カーソルを使用して結果セットを取得します (テーブルのフィールド名を使用して値にアクセスできます)
コードをコピー コードは次のとおりです:
# -*- コーディング: UTF-8 -*-
# 出典: Crazy Ant のブログの概要 www.server110.com
import MySQLdb as mdb
import sys
#mysql クエリのリンク オブジェクトを取得
con = mdb.connect('localhost', ' root' , 'root', 'test')
with con:
#接続上の辞書カーソルを取得します。取得方法に注意してください。
#各カーソルは実際にはカーソルのサブクラスです
cur = con.cursor(mdb.cursors.DictCursor)
#実行文は変更されません
cur.execute("SELECT * FROM Writers")
#データの取得方法は変更されません
rows = cur.fetchall( )
#データのトラバースは変更されません (以前よりも直接的です)
for rows in rows:
#ここでは、キーと値のペアのメソッドを使用してデータを取得できますキー名別
print "%s %s" % (row["Id"], row["Name"])
例 5、単一テーブルのフィールド名と情報を取得する方法
コードをコピー コードは次のとおりです:
# -*- コーディング: UTF-8 -*-
# 出典: Crazy Ant のブログ www.server110.com 概要
mdb として MySQLdb をインポート
import sys
#Getデータベースのリンク オブジェクト
con = mdb.connect('localhost', 'root', 'root', 'test')
with con:
#通常のクエリ カーソルを取得します
cur = con.cursor()
cur.execute("SELECT * FROM Writers")
rows = cur.fetchall()
#接続オブジェクトの説明情報を取得
desc = cur.description
print 'cur.description:',desc
#フィールド名であるヘッダーを出力します
print "%s %3s" % (desc[0][0], desc[1][ 0])
行内の行:
#Print results
print "%2s %3s" % row
コードをコピー コードは次のとおりです:
実行結果: cur.description: (('Id', 3, 1, 11 , 11, 0, 0), ('名前', 253, 17, 25, 25, 0, 1))
ID 名
1 ジャック・ロンドン
2 オノレ・ド・バルザック
3 ライオン・フォイヒトヴァンガー
4 エミール・ゾラ
5 トルーマン・カポーティ
例 6. プリペアド ステートメントを使用してクエリを実行する (より安全で便利です)
コードをコピー コードは次のとおりです:
# -*- コーディング: UTF-8 -*-
# 出典: Crazy Ant のブログの概要 www.server110.com
import MySQLdb as mdb
import sys
con = mdb.connect('localhost', 'root', 'root', 'test')
with con:
cur = con.cursor()
#これは、アセンブル可能な SQL ステートメントを記述することで実行できることがわかります。
cur.execute("UPDATE Writers SET Name = % s WHERE Id = %s",
("Guy de Maupasant", "4"))
#cur.rowcount を使用して影響を受ける行数を取得します
print "更新された行数: %d " % cur .rowcount
結果:
コードをコピー コードは次のとおりです:
更新された行数: 1