cursorを使ってDB操作をするのに以下のように記述した
sql_table = 'test_master'
sql_value = '(%s, %d, now(), now())'
input_value = [test_name, int(test_id)]
stmt = "INSERT INTO {table} ({column}) value s {value} on duplicate key update updated_date=now()".format(table=sql_table, column=sql_column, value=sql_value)
connection = MySQLdb.connect(**db_connect_info)
connection.cursorclass = MySQLdb.cursors.DictCursor
cursor = connection.cursor()
#cursor.executemany(stmt, input_value)
cursor.execute(stmt, input_value)
print('cursor._executed:')
print(cursor._executed)
connection.commit()
connection.close()
一見これでも良さそうだがこうすると以下のようなエラーが表示される
cursor.execute(stmt, input_value)
File “/home/g-test/anaconda3/lib/python3.5/site-packages/MySQLdb/cursors.py”, line 210, in execute
query = query % args
TypeError: %d format: a number is required, not str
idはintなので%dで指定しているのにintで指定してくれと怒られる
以下の記事を参照するとどうやら%dではなく%sを使う模様
参考になった記事
プレースホルダは%sで良くって、数値化文字列可適切に展開してくれるらしい
コメント