Python 調取MYSQL數據並插入到CSV文件

Python是可以操作數據庫了,我們下面一起來看一篇Python 調取MYSQL數據並插入到CSV文件,希望文章能夠幫助到各位。


如何利用python腳本將遠程數據庫查詢值,並將該值按照csv中"column A"對應關系整體插入到"column B",最近handle了一個case,聯想到python天生對數據處理較shell有明顯的優勢,最後嘗試用腳本搞定這個看起來邏輯很簡單,但又不簡單的data processing.
Target:
column A 是DB記憶體儲的若幹Project name,需要通過查詢數據庫,獲取這些project name在DB對應的Project key的具體值,並插入column A後保存.

#!/usr/bin/env python
# encoding: utf-8
import MySQLdb
import csv
import sys
# Define csv list
Csv_content = []
Csv_content_edited = []
# Define project list
Project_names = []
# Define db list
Db_content = []
# Define the file that needs to be handled.
try:
 file_name = sys.argv[1]
 new_file_name = file_name.split('.')[0] + '_new.' + file_name.split('.')[1]
except IndexError:
 pass
def selectDB():
 # Open db connection
 db = MySQLdb.connect("test.com", "testuser", "testuser", "testdb")
 # Use cursor() fuction to get current db cursor
 cursor = db.cursor()
 Csv_content_edited = readContent(file_name)
 for c in range(1,len(Csv_content_edited)):
 Project_names.append(Csv_content_edited[c][0])
 Project_name_string = ",".join(['"' + p + '"' for p in Project_names])
 # SQL "SELECT" statement
 sql = 'select pname,pkey from project where pname in (%s)' %Project_name_string
 
 try:
 # Execute SQL
 cursor.execute(sql)
 # Obtain all the record list
 results = cursor.fetchall()
 for row in results:
  #lower_user_name = row[3]
  Db_content.append(row)
 return Db_content
 except:
 print "Error: unable to fecth data"
 # Close connection
 db.close()

def readContent(file_name):
 # Read the csv file,then put it into list.
 with open(file_name, 'r') as csvfile:
 csv_reader = csv.reader(csvfile, delimiter=',')
 for row in csv_reader:  
  if row[0]:
  Csv_content.append(row)
 return Csv_content

def insert_col():
 Csv_content_edited = readContent(file_name)
 # Insert null value to each components of "Csv_content_edited" afterward.
 for i in range(0,len(Csv_content_edited)):
 Csv_content_edited[i].insert(1,'')
 # Define the second inserted column title.
 Csv_content_edited[0][1] = "Pkey"
 # Grab the users data from db.
 Db_content = selectDB()
 # print Db_content
 
 for d in range(0,len(Db_content)):
 Pkey = Db_content[d][1]
 Pname = Db_content[d][0]
 for c in range(0,len(Csv_content_edited)): 
  if Csv_content_edited[c][0] == Pname:
  Csv_content_edited[c][1] = Pkey
 # print Csv_content_edited
 pname_list = []
 Csv_content_edited_new = []
 
 for c in range(0,len(Csv_content_edited)):
 if not Csv_content_edited[c][0] in pname_list:
  pname_list.append(Csv_content_edited[c][0])
  Csv_content_edited_new.append(Csv_content_edited[c])
 # print Csv_content_edited_new
 
 return Csv_content_edited_new
 
# Write the csv file. 
def writeContent():
 with open(new_file_name,'wb') as csvfile:
 csv_writer = csv.writer(csvfile)
 csv_writer.writerows(insert_col())

# Execute the finnal function. 
if __name__ == '__main__':
 try:
 writeContent()
 except (IOError,NameError,IndexError):
 print "Please type the correct file name. e.g: '" + sys.argv[0] + " testfile.csv'"
 else:
 print 'The result file is: %s' %new_file_name

Result:

更多相關文章
  • 下文給各位整理一篇關于ThinkPHP框架調用mysql數據庫數據例子了,如果各位朋友不知道如何利用ThinkPHP框架查詢mysql數據庫的朋友可以和小編一起來看看吧.1.首先簡述一下什麽是ThinkPHP Thi
  • 因爲工作需要我們需要把mysql中的數據導出成csv文件,然後由商家提供的數據我們再要利用php導入csv文件到mysql數據庫,下面我來給大家介紹PHP把導入和導出CSV文件到mysql數據庫程序代碼,有需要了解的朋友可參考.下面只是一個簡單的實例我們先准備mysql數據表,假設專案中有一張記錄學
  • 文章詳細的介紹在asp中如何來連接mysql數據庫並查出數據並輸出,同時也介紹了連接mysql核心代碼及中文亂碼解決辦法.我們先看下面這段代碼 代碼如下 set conn = server.createobject(
  • 本文章來給大家介紹關于如何在Drupal讀取Excel並導入到mysql數據庫的方法,這裏我們介紹使用excel插件PHPExcel,PHPExcel 是用來操作Office Excel 文檔的一個PHP類庫,它基于微軟的OpenXML標准和PHP語言.可以使用它來讀取.寫入不同格式的電子表格,如
  • 本文章來給大家介紹一款PHPExcel讀取excel並導入數據庫代碼實現,有需要了解的朋友可參考,這裏我們介紹的是讀取表格之後再創建mysql連接,然後保存到mysql數據庫.PHPExcel是相當強大的 MS Office Excel 文檔生成類庫,當需要輸出比較複雜格式數據的時候,PHPExce ...
  • Python把Nginx日志保存到MySQL數據庫
    工作需要要把由伺服器産生的日志文件轉換並保存到數據庫中,然後根據相關規則生成可視化的界面,下面我就來介紹利用Python把Nginx日志保存到MySQL數據庫,希望文章對各位會帶來幫助.Nginx access日志格式如下: 代碼如下 #使用的nginx默認日志格式$remote_addr - $r
  • 這裏我們利用jquery ajax getjson函數來操作調用js返回的json數據並進行分析,賦給html頁面啊,下面來看看這三個實例吧.例如:負載從test.js,從返回的json數據訪問json數據的名稱$.
  • 下面實例比較簡單,就是先利用com接口讀取access數據庫教程,把數據讀取後再連接mysql教程數據庫,把對應的字段insert到mysql對應的表與字段就實現了.<?php教程header('ontent-Typ
一周排行
  • select用到最多的就可以多選或單選的下拉框效果了,如果碰到聯動效果了我們肯定然後可以直接一個個調用,下面我來介紹Jquery Ajax無刷新載入select值代碼,有需要了解的同學可參考.JS部分*******/
  • MongoDB 的查詢語言非常強大,語法類似于面向對象的查詢語言,與傳統的關系型數據庫相比,它具有操作簡單.完全免費.源碼公開.隨時下載等特點.MongDB基本操作1 條件操作符<, <=, >, ...
  • gzip是GNUzip的縮寫了,它的主要作用就是用來減輕伺服器的帶寬問題了,如一個100KB的文件如果開啓gzip之後可以變成20KB左右哦,是不是很有吸引力呀,下面一起來看看吧.查看ngix編譯參考,是否啓用了gz
  • 本文章介紹了關于python中的for,for in,while,fi else ,continue語句,break語句等用法.1. if 語句 代碼如下 i = 10n = int(raw_input(" ...
  • js中絕對定位獲取寫起來比較複雜,如果使用jquery 我們可以借助于它的offset偏移來獲取div top和left值,下面我整理一些例子.offset() 方法返回或設置匹配元素相對于文檔的偏移(位置).絕對位
  • Percona 爲 MySQL 數據庫伺服器進行了改進,在功能和效能上較 MySQL 有著很顯著的提升.該版本提升了在高負載情況下的 InnoDB 的效能.爲 DBA 提供一些非常有用的效能診斷工具:另外有更多的參數
  • 俠盜獵車手5GTA5戰鬥機操作技巧詳解攻略
    GTA5>遊戲過程中,有很多玩家對戰鬥機和空戰非常癡迷,基本操作都掌握了,但就還是感 ...
  • 本文章來給各位同學介紹在oracle tde透明數據加密的一些自我認識,如果你對oracle tde有興趣不防進入參考,希望此教程對你有幫助.oracle的透明數據加密,是Oracle高級安全選項中的一個部分,需要額 ...
  • 本文章來給各位 同學介紹在使用Rhythmbox 中文亂碼解決方法總結,有需要了解學習的朋友可進入參考參考.方法一Rhythmbox 播放中文亂碼,可以通過下面的方法來修改: 代碼如下 sudo gedit .pro
  • 黃金鬥士s8怎麽刷機聯想s8刷機教程
    黃金鬥士S8是聯想公司出的一款比較好的安卓系統手機了,這款手機承載的是android4.2 ...