繁体   English   中英

需要一个带有MySQl的Python脚本:从csv读取值,在db中获取并将其写入另一个文件

[英]Need a Python script with MySQl : read value from csv, fetch in db and write it in another file

我是Python脚本的新手。 我正在使用Python 3,并希望在以下情况下编写脚本。

1个csv文件具有2k条记录,仅存在1列。

 Eg : 
Name
Abc
def
Ghi

我想将这些字符串存储在列表中,并使用它们使用for循环逐一使用MySQL将它们提取到表中。

在阅读器中说行:

query=("select * from table where name=%s", (row)) name_list =cursor. Fetchall()

现在再次将传入记录存储在name_list中之后,我想将它们写入CSV文件中

如果不清楚,请告诉我。

感谢您的宝贵帮助。

问候,Sukumar

更新

下面是我尝试过的东西。 但是我在数据类型转换中面临问题。 该查询正在询问字符串值,但当前值是字节。 是全新的,所以请忽略是否出了问题

import csv  
import MySQLdb 
db = MySQLdb.connect("localhost", "root", "usr_name", "pwd") 
cursor = db.cursor() 
with open("input_names.csv") as f: 
    reader = csv.reader(f) 
    for row in reader: 
        name_list = list(reader) 
        query = ("select * from where name=%s", (i)) 
        cursor.execute(query) 
        details_list = cursor.fetchall()
db.close() 
details = open("output.csv",'wb') 
wr = csv.writer(details, dialect='excel') 
for item in details_list: 
    wr.writerow(item)
import pandas as pd
names_df = pd.read_csv('names.csv')
names_lst = list(names_df['names])

sql_df = pd.DataFrame()
for names in names_lst:
    sql_df = sql_df.append(pd.read_sql('select * from table where name =' + names, con = db_conn_params)

根据您提供的信息,我假设了两种情况1)data.csv文件中的“名称”列下存在数据

        Name 
        -----
        abc
        def
        ghi 

2)您需要将数据写入表中3)从表中检索数据并需要将其写入CSV文件

我已经使用sqlite数据库来完成工作,请告诉我是否有帮助

import sqlite3
conn=sqlite3.connect('test.db')
print 'Database created'
conn.execute('''CREATE TABLE SAMPLE (NAME   TEXT    NOT NULL);''')
print 'Table created'
#Reading input file 
with open('D:\Users\pankaj-m\Desktop\Stack overflow questions\data.csv','rb') as f:
  reader=csv.reader(f)
  for row in reader:
      print row
      name_list=list(reader)
#writing to table 
for item in name_list:
    conn.execute('INSERT INTO SAMPLE VALUES (?)',item)
conn.commit()
conn.close()


#Reading from table and writing to file 
conn=sqlite3.connect('test.db')
cur=conn.cursor()
cur.execute("select * from SAMPLE")
cursor=cur.fetchall()
with open('D:\Users\pankaj-m\Desktop\Stack overflow questions\data_output.csv','wb') as f1:
    writer=csv.writer(f1)
    for row in cursor:
        writer.writerow(row)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM