データベースへのPythonのExcelスプレッドシートの情報により、

序文

    同社は、するために、対応するハードウェア資産はまた、タイムリー互いに同期することはできません資産情報を変更するには、物理​​マシンの仮想複数の仮想マシンながら、乱雑テーブル管理があり、増加したオリジナルの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スプレッドシートやデータベースのテーブル構造はに対応していない」、慎重に再びフィールド情報をチェックした後、操作は、解決することができます!

おすすめ

転載: www.cnblogs.com/kazihuo/p/11128248.html