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()