序文
同社は、するために、対応するハードウェア資産はまた、タイムリー互いに同期することはできません資産情報を変更するには、物理マシンの仮想複数の仮想マシンながら、乱雑テーブル管理があり、増加したオリジナルのExcelスプレッドシートは、ビジネスの増加に伴い、情報サーバ資産を記録し使用しています回のペースを保つ、ボスは、資産情報を記録するためのDjangoベースの資産管理プラットフォームフレームワークを上演しました。
そして、私は、サーバー情報を担当していますし、その情報を整理ジャンゴで、照合エクセルに基づいて、資産管理プラットフォームに、個々の予備的な理解を入力し、手動で操作した情報によって入力されたそのページには、MySQLデータベース指定した指定したテーブルに格納されます効率的に情報を入力するためには、私は、データベースにExcelのスプレッドシートの資産情報をインポートするためのPythonを使用します!
環境
次のように1)、対応表にインポートするデータベースの構造を決定します。
2)照合Excelスプレッドシートに対応するテーブルの構造を、次のように
スクリプト
#猫のinsert.py
1 #- * -コーディング:UTF-8 - * - 2 #1 著者:kazihuo 3 4 インポートpymysql 5 インポートxlrd 6 7 #连接数据库 8 試み: 9 のdb = pymysql.connect(ホスト= " 10.2.5.200 "、ユーザ= " ルート" 、 10 のpasswd = " 123456 " 、 11 のdb = " OPSINFO " 、 12 文字セット=' UTF8 ' ) 13は 除く: 14 印刷(" サーバーにできませんでしたMySQLの接続" ) 15 16 。17 DEFのopen_excel(): 18で 試してみる: 19 ブック= xlrd.open_workbook(" test.xlsx " ) 20は、 #1 test.xlsxテーブルですそれは同じディレクトリに、このスクリプトではない場合、ファイル、あなたは絶対パス記述する必要がある 21を 除い: 22 印刷(「!オープンExcelファイルに失敗しました」) 23を 試して: 24 シート= book.sheet_by_name(" OPS-情報" ) 25の #1 OPS-情報是表シート名称、不理解的可看上图; 26 リターンシート 27 を除い: 28 プリント(" Excelのワークシートを見つけて失敗した!" ) 29 30 31 デフinsert_deta(): 32 =シートopen_excel() 33 カーソル= db.cursor() 34 ROW_NUM = sheet.nrows 35 のための I における範囲(1 、ROW_NUM): 36 #最初の行は、タイトル名である、第二行はカウント0を開始するコンピュータから開始すべきであるように、テーブルに対応するフィールド名は、値である。1 37 ROW_DATA = sheet.row_values(I) 38がある 値=(ROW_DATA [0]、ROW_DATA [1]、ROW_DATA [2]、ROW_DATA [3]、ROW_DATA [4]、ROW_DATA [5 ]) 39 #のExcelのテーブル内のデータの値を表す各列 40 を印刷(I)が 41である = SQL ' INSERT INTO CN2Info_machins ()値(%S、%S、%S、%S、%S、%S)' 42は、 #1 INSERT INTO CN2Info_machins(ホスト、IP、IdracIP、位置、ラック、ST)値(%S、%= SQL' S、%S、%S、%S、%のS) ' 43は cursor.execute(SQL、値) #SQL文の実行 44である (db.commit) 45 cursor.close() #接続を閉じる 46は 47 48 open_excelを() 49 insert_deta()
次のように###のスクリプトを実行した後、あなたは、データベース内の対応する情報を見ることができます:
次のように###ページも、対応情報を登場しました:
###スクリプトの参照リンクhttps://www.cnblogs.com/longbigbeard/p/9309180.html
###注意
データを挿入するとき、テーブルのidは自動インクリメントフィールドなので、Pythonスクリプトでは、著者があるので、ちょうど挿入される情報に対応するフィールドを書きます!
エラー
私は次のように与えられ、動作中に何らかのトラブルがあります。
pymysql.err.InternalError:(1136年、「列数が行1で値カウントと一致しません」)
溶液#
エラーは、データが挿入されているので、ときに情報フィールドとデータベースフィールドの挿入が矛盾している、原因があってもよいし、「スクリプトの挿入文の欠陥の存在」「Excelスプレッドシートやデータベースのテーブル構造はに対応していない」、慎重に再びフィールド情報をチェックした後、操作は、解決することができます!