午後からの続きです。
何でもいいからINSERTしてみる
無事PythonからMySQLにConnectできたので、今度はMySQLにINSERTしていきたいと思います。 ひとまずテストも兼ねて、保存するのは日時、名前、ツィート内容だけです。
crsr = db.cursor()
insert_query = "INSERT INTO akb_test5 (created_data, name, tweet) VALUES (%s, %s, %s)"
crsr.execute(insert_query, (created_data, name, tweet))
db.commit()
cursor.close()
db.close()
実行結果
mysql.connector.errors.DataError: 1292 (22007): Incorrect time value: 'Sun Jul 01 09:45:46 +0000 2018' for column 'created_data' at row 1
うすうす気づいていたのですが、やっぱりTwitterから戻ってくる「Sun Jul 01 09:45:46 +0000 2018」がデータ型に合わないらしいですね。これは何のデータ型なのかと調べてみたのですが、ちょうどいいのが見つからず。今は何でもいいので、データベースにINSERTするのが先なので、created_dataをコードから消してしまいます。再実行。
実行結果
mysql.connector.errors.DatabaseError: 1366 (HY000): Incorrect string value: '\xF0\x9F\x91\x97\xF0\x9F...' for column 'tweet' at row 1
このエラーは絵文字が対応していないとのことです。ツィートの内容に絵文字があったのでしょうか? これの解決法はデータベースに設定したutf8をutf8mb4に変更すれば良いとのことです。
昨日作ったばかりなので、utf8なのは知っているのですが、念のため確認。
show variables like "chara%";
実行結果
character_set_client utf8
utf8ですね。しかし、今はutf8をutf8mb4に変更するよりも、データベースにデータを入れたいので、修正は後回しにします。 tweetも削除し、右往左往して最終的にできたコードがこちらです。
connect = { 'user': ‘NAME’, 'password': ‘PASSD’, 'host': 'localhost', 'database': 'akb_test' } db=mysql.connector.connect(**connect) crsr = db.cursor() sql = 'INSERT INTO akb_test(name) VALUES("名前")'; crsr.execute(sql) db.commit() crsr.close()
これでひとまず、akb_testのテーブルに「名前」という情報が入りました。
これをベースに明日こそはTwitterの情報を入れて行きたいです。
今日の結果
今日の呟き件数は少なめの33件でした。 7月になったので、「暑い」や「下半期」という呟きが目立ちます。それと、サンリオのキャラクター投票の発表があったようで、マイメロディに出てくるキャラクターのピアノちゃんに触れている呟きも目立ちます。
形容詞 '楽しい': 3, 'ない': 2, '懐かしい': 1, '嬉しい': 1, '良い': 1, 'やさしい': 1, 'あつい': 1
名刺 '月': 11, '今日': 8, '夏': 8, '年': 6, 'ちゃん': 5, '下半期': 5, '日': 4, '楽しい': 3, '位': 3, 'ピアノ': 3, '私': 3, '枚': 3, '目': 3, '出演': 3, '雷鳴': 3, 'チーム': 3,
動詞 'する': 15, '月': 11, '今日': 8, '夏': 8, '年': 6, 'ちゃん': 5, '下半期': 5, 'てる': 5, '日': 4, '観る': 4, '見る': 4, 'やる': 4, '楽しい': 3, '位': 3, 'ピアノ': 3, '私': 3, '枚': 3, '目': 3, '出演': 3, '雷鳴': 3, 'チーム': 3, 'いる': 3, 'くださる': 3,