Python - マルチスレッドでの mysql 挿入エラー
伊谢尔伦
伊谢尔伦 2017-06-13 09:24:41
0
1
1152

クローラーを作成するとき、クロールされたデータをデータベースに保存したいと思います。各ページには多くのエントリがあります。たとえば、ある人には多くの訪問者がいる可能性があるため、アンロード ループを挿入します。

リーリー

1 ページに 1 つのスレッドがあります。遅いのが嫌なら 5

を開いてください。 リーリー

非常にスムーズに動作します:

INSERT INTO 訪問者 (所有者名,所有者 ID,訪問者名,訪問者 ID,訪問時間) 値 ("huosai7",4893,"Liang2017",7252799,"2017-5-22 21:06")
INSERT INTO個人情報 (所有者名、オーナーID、吉份、華角、シャオミジアオ、ジンビ、ハオユウ、ズーティ、リジ、シャンチェ、フェンシアン、孔建方文梁、ヨウシアンヤンジェン、シピンレンジェン、ジュジュディ、チュシェンディ、上思蘆史建、上思火東史建、瑞侯芳文、朱世世建、ザイシェンシージ)アン、シェングリ、シンビー ) VALUE( "huosai7",4893,0,0,0,0,0,0,0,0,0,0,0,0,"","","2100-01-01 12:00","2100- 01-01 12:00","2100-01-01 12:00","2004-1-3 19:28",0,"2100-01-01 12:00",0)
INSERT INTO訪問者 (所有者名,所有者ID,訪問者名,訪問ID,訪問時間) VALUE ("龙乐",4894,"Liang2017",7252799,"2017-5-22 21:06")
(1062, "重複エントリ '4894- 7252799-2017-05-22 21:06:00' キー 'PRIMARY'")
INSERT INTO 個人情報 (ownername,owneruid,jifen,huajiao,xiaomijiao,jinbi,haoyou,zhuti,rizhi,xiangce,fenxiang,kongjianfangwenliang) 、youxiangyanzheng、shipinrenzheng、juzhudi、chushengdi、shangcifabiaoshijian、shangcihuodongshijian、zuihoufangwen、zhuceshijian、zaixianshijian、shengri、xingbie) VALUE("龙乐",4894,0,0,0,0,0,0,0,0,0, 0,0,0,"","","2100-01-01 12:00","2100-01-01 12:00","2100-01-01 12:00","2004-1- 3 20:21",0,"2100-01-01 12:00",0)
....

そこで、max_thread を 10 に設定したので、結果は次のようになります。

INSERT INTO 訪問者 (所有者名,所有者 ID,訪問者名,訪問者 ID,訪問時間) 値 ("xiao61",4889,"Liang2017",7252799,"2017-5-22 21:06")

(2006, 「MySQL サーバーがなくなった」)

個人情報に挿入 (所有者名、オーナーID、ジフェン、華角、シャオミジアオ、ジンビ、ハオヨウ、ズーティ、リジ、シアンス、フェンシアン、コンジャンファンウェンリャン、ユーシャンヤンジョン、シピンレンジェン、ジュジュディ、チュシェンディ、シャンシファビアオシージアン、シャンシフオドンシージアン、ズイホウファンウェン、ジューチェシジ)アン、ザイシャンシジアン、シェンリ,xingbie) VALUE("xiao61",4889,0,0,0,0,0,0,0,0,0,0,0,0,"","","2100-01-01 12:00 ","2100-01-01 12:00","2100-01-01 12:00","2004-1-3 15:56",0,"2100-01-01 12:00",0)

(2006, 「MySQL サーバーがなくなった」)

INSERT INTO Visitor (ownername,owneruid,visitorname,visitorid,visittime) VALUE ("confused Cool bear",4897,"Liang2017",7252799,"2017-5-22 21:06")

(2006, 「MySQL サーバーがなくなった」)

個人情報に挿入 (所有者名、オーナーID、ジフェン、華角、シャオミジアオ、ジンビ、ハオヨウ、ズーティ、リジ、シアンス、フェンシアン、コンジャンファンウェンリャン、ユーシャンヤンジョン、シピンレンジェン、ジュジュディ、チュシェンディ、シャンシファビアオシージアン、シャンシフオドンシージアン、ズイホウファンウェン、ジューチェシジ)アン、ザイシャンシジアン、シェンリ,xingbie) VALUE("混乱したクールなクマ",4897,611,0,1655,0,0,2,0,0,0,34,0,0,"","","2007-3-27 00 :37","2007-3-27 00:37","2007-3-27 00:37","2004-1-3 21:08",0,"2100-01-01 12:00" , 1)

(2006, 'MySQL サーバーがなくなった')
......................

2006 が登場したことがわかり、max_thread を 30 に設定すると、結果は次のようになります。

以上です。詳細は十分ですか?詳細が十分でない場合、他に何が必要ですか?教えてください!

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全員に返信(1)
巴扎黑

ここを見てください。おそらく pymysql を使用していると思います。そのスレッド セーフティの説明は 1 で、対応する pep249 には詳細な説明があります:

スレッドはモジュールを共有できますが、接続は共有できません。

スレッドはモジュールを共有できますが、接続は共有できません。これは、各スレッドで接続を作成する必要がある可能性があることを意味します。

な~ORMを使ってみてはどうでしょうか?

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート