MySQL
プレースホルダ
今回は、データを登録してみます、
SQL文のINSERTを使用します。
プレースホルダの使い方、
cur.executeの2番目の引数タプル形式で、
%sに対応させて書きます。
プレースホルダは%sで良く%dはエラーになります、
つまり数値か文字列かを正しく展開します。
プレースホルダは、自分の記憶ではスピードが速くなったと思います。
*プレースホルダを使う方法
id_data = 100
name_data = 'kobayashi'
sql = "insert into name_list values(%s,%s)"
cur.execute( sql, (id_data, name_data ) )
例では、valuesの最初の%sが、
cur.executeのid_dataの値になります。
二番目の%sが、name_dataの値になって、
置き換えてくれます。
*通常のSQL文を作成する方法
idは数字型なので、引用符「'」がなく、
nameは文字型なので、引用符で囲みます
id=55
name = 'kakeshi'
sql = "insert into name_list values( %d, '%s' )" %( id, name )
cur.execute( sql )
※コネクションするときは、以下でお願いします
conn = MySQLdb.connect(
user='guest',
db='test_db')
## 著作元は以下になります。(ご注意下さい)
#L https://simple-and-useful.net
#T ユーチューブ用(PyhtonからMySQLを使う)
#C サンプルプログラム 起動できます
import MySQLdb
print( "DB接続" )
# 接続する
conn = MySQLdb.connect(
user='guest',
db='test_db')
# カーソル取得
print( "カーソル取得" )
cur = conn.cursor()
# name_listテーブルがあったら、消す
cur.execute("DROP TABLE IF EXISTS name_list")
# テーブルの作成
cur.execute( "create table name_list(id int, name char(100))" )
#テーブル構造を確認する
print( "テーブル構造を確認" )
cur.execute( "desc name_list" )
print("| Field | Type | Null | Key | Default | Extra |")
for row in cur.fetchall():
print( row[0], row[1] )
#*****************************************
# データを登録(INSERT)
#*****************************************
print( "データを登録" )
# プレースホルダを使用
id = 7
name = 'kobayashi'
sql = "insert into name_list values(%s,%s)"
cur.execute( sql, (id, name ) )
# sql文に値を直接設定
id = 9
name = 'kakeshi'
sql = "insert into name_list values( %d, '%s' )" %( id, name )
cur.execute( sql )
conn.commit()
#*****************************************
# データを表示する
#*****************************************
print( "データを表示" )
sql = "select id, name from name_list"
cur.execute(sql)
# fetchallで全て読込から、表示する
for row in cur.fetchall():
print( row[0], row[1])
# 接続を閉じる
cur.close()
conn.close()