のんびりしているエンジニアの日記

ソフトウェアなどのエンジニア的な何かを書きます。

MySQLをPythonから弄る

Sponsored Links

皆さんこんにちは
お元気ですか。私は元気です。

さて、今まで掲載していた記事では全てConsoleから弄っていたのですが、
プログラムできないと不便でございます。

MySQLをプログラムから弄ることができます。さて、必要なパッケージをpipを使ってインストールします。

インストール

pip install mysql-python

実際の例

まずは、実際の例を見て行きましょう。

#coding:utf-8
import MySQLdb

""" データベースに接続する """
connector = MySQLdb.connect(host="localhost",
	db="tests", user="wwww", passwd="xxxx", charset="utf8")

""" テーブルを作る """
cursor = connector.cursor()
sql = "CREATE TABLE test_table(id INT NOT NULL,content TEXT)"
cursor.execute(sql)
""" データベースに情報を格納する """
sql = "INSERT INTO test_table VALUES(1,'python')"
cursor.execute(sql)

data = (2,"C")
statement = "INSERT INTO test_table VALUE(%s, %s)"
cursor.execute(statement,data)

dataset = [
  (3, "Java"),
  (4, "C++"),
  (5, "Ruby"),
]

statement = "INSERT INTO test_table VALUES(%s, %s)"
cursor.executemany(statement, dataset)

""" データベースに格納したデータを取得する。 """
cursor.execute("select * from test_table")
result = cursor.fetchall()

for row in result:
	print row

""" テーブルを廃棄する """
cursor.execute("DROP TABLE test_table")

基本的にカーソルを取得して、

sql = "CREATE TABLE test_table(id INT NOT NULL,content TEXT)"
cursor.execute(sql)

sql文を作って、実行すれば問題ありません。DROP TABLEとかも問題なく動作します。

レコードを挿入

レコードの挿入ですが、prepared statementみたいな使い方をすれば以下のようにできます。

data = (2,"C")
statement = "INSERT INTO test_table VALUE(%s, %s)"
cursor.execute(statement,data)

複数まとめてでコミットする場合は

dataset = [
  (3, "Java"),
  (4, "C++"),
  (5, "Ruby"),
]

statement = "INSERT INTO test_table VALUES(%s, %s)"
cursor.executemany(statement, dataset)

SELECTの結果を取得する

cursor.execute("select * from test_table")
result = cursor.fetchall()

for row in result:
	print row

fetchall()で結果を取得することができます。それをfor文で回して結果を取得しています。