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:

 

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索python csv 导入mysql、python csv mysql、python处理csv数据、python 保存数据到csv、python 导入csv数据,以便于您获取更多的相关知识。

时间: 2024-08-29 20:04:01

Python 调取MYSQL数据并插入到CSV文件的相关文章

python-Python 读取MYSQL数据并插入到CSV文件相应位置

问题描述 Python 读取MYSQL数据并插入到CSV文件相应位置 数据库有一张表,除时间以外,每个字段都有可能重复(因为是按照系统时间,自动获取的网页数据现在我想做一张csv表,表的列名是时间字段(跟据数据库时间自增的),每行开头是名称(数据库存在的,只不过是去重后取出的)那么现在问题来了,如何按照时间名称从数据库获取数据填入相应的位置. 解决方案 你直接用对应的sql语句查询出符合你要求的数据,然后再写入CSV文件. 解决方案二: MySQL 直接读取csv文件数据到表中python读取c

python实现将html表格转换成CSV文件的方法

  本文实例讲述了python实现将html表格转换成CSV文件的方法.分享给大家供大家参考.具体如下: 使用方法:python html2csv.py *.html 这段代码使用了 HTMLParser 模块 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 5

mysql命令模式导出导入csv文件代码

mysql> select * from tt_address; +-----+-----+--------+--------+------+--------+------------+-------------+------ -----+----------+-------+------------------------+-------+--------+-----+------- --+----------+------+---------+------+-----+--------+--

php中数据的批量导入(csv文件)

数据 有时写程序时后台要求把大量数据导入数据库中,比如计算机考试成绩的查询.电话簿的数据等一般都是存放在excel中的,这时我们可把数据导出成csv文件,然后通过以下程序即可在后台批量导入数据到数据库中. 下面只是主要程序部分: <?php /***************************************************作者:冲星/arcow**************************njj@nuc.edu.cn**************************

php中数据的批量导入(csv文件)_php基础

有时写程序时后台要求把大量数据导入数据库中,比如计算机考试成绩的查询.电话簿的数据等一般都是存放在excel中的,这时我们可把数据导出成csv文件,然后通过以下程序即可在后台批量导入数据到数据库中. 下面只是主要程序部分: <?php /***************************************************作者:冲星/arcow**************************njj@nuc.edu.cn*****************************

php中数据的批量导入csv文件代码

下面只是主要程序部分:  代码如下 复制代码 <?php /***************************************** **********作者:冲星/arcow**************** **********njj@nuc.edu.cn******************* **********php导入csv文件到数据库********** **********同时计算程序执行时间*********** **********www.111cn.net******

使用INSERT语句向MySQL数据表插入行记录

使用INSERT语句插入新数据 语法:INSERT [INTO] tbl_name [(col_name,...)] VALUES (pression,...),- INSERT [INTO] tbl_name SET col_name=expression, ... 让我们开始利用 INSERT 语句来增加记录,这是一个 SQL 语句,需要为它指定希望插入数据行的表或 将值按行放入的表.INSERT 语句具有几种形式: 可指定所有列的值: 例如: shell> mysql –u root –p

mysql数据操作插入 查询 修改 删除命令用法

insert添加数据 前面我们学习了数据库,数据库表,接下来我们学习一下操作表中的数据. 让我们开始利用 insert 语句来增加记录,这是一个 SQL 语句,需要为它指定希望插入数据行的表或将值按行放入的表.如果你设置了主键并且自动增长,添加的时候需要把对应的主键值设置为null或者数字"0". 基本语法: insert [into] tbl_name [(col_name,...)] VALUES (pression,...) insert [into] tbl_name SET

access表中的数据怎么存为csv文件

问题描述 通过什么思想? 解决方案 解决方案二:有哪位大侠帮下忙解决方案三:如果是手工.可以用MicrosoftAccess打开.再另存.如果想用代码实现,就很简单了.遍历数据每条数据字段以","号分隔输出为文本文件.文件名为.csv即可.解决方案四:将所有对应字段文本内容拼成STRING数据就可以解决方案五:有没有关键部分的代码?