2017-05-17 1 views
0

Ich benutze Python Django und ich habe eine CSV-Datei, die 4 Felder Name, Abkürzung, Adresse und Art der Schule enthält. Ich habe 3 Datenbanktabelle genannt Universität, Art der Universität und Universität-Typ Mapping. Ich habe eine CSV-Liste, die Name der Universität hat Ich möchte es mit Universität Tabelle in der Datenbank vorhanden vergleichen und möchte herausfinden, ID entsprechend diesem Namen und gleichen Prozess mit Art der Universität und herauszufinden, seine ID.Und dann möchte ich diese Werte in University-Typ Mapping einfügen. Ich bin die Lage, Daten aus dem CVS mit dieser Methode zu lesen, aber für Spiel auf Datenbank-Suche fest: hier ist, was ich mit der Suche zu lesen bin mit:CSV-Werte laden, dann nach Übereinstimmungen in der MySQL-Datenbank suchen und dann Einfügen anwenden?

import csv 

path = '/home/abi/Downloads' 

file=open(path +"university.CSV", "r") 
reader = csv.reader(file) 
for line in reader: 
    t=line[1],line[2] 
    print(t) 

Namen

NIT 
Pune University 
New University 
Gujarat Technical University 
Kuwait University - College of Business Administration جامعة الكويت - كلية العلوم الادارية 
testuniversity 
testuniversity 
testuniversity23 
testuniversity 
Mumbai university 
Mumbai university 
California University 
California University 
California University 
California University 
California University 

ist dies die ein Feld in csv

und ich mit dem Feld ‚Namen‘ Universität sQL-Tabelle habe, und ich will es CSV Namen vergleichen und die entsprechende ID von ihm

erhalten
>>> import csv 
>>> import pymysql 
>>> import pymysql.cursors 
>>> connection = pymysql.connect(user='root',password='root') 

>>> path = '/home/abi/Downloads/' 
>>> t=[] 
>>> p=[] 
>>> file = open(path +"university_list.csv - university_list.csv.csv","r") 
>>> reader = csv.reader(file) 
>>> for line in reader: 
...  t=line[0] 
...  p=line[3] 
...  print t 
+0

können Sie pymysql verwenden, um mysql und Suchtabellen zu verbinden. – Frank

+0

@Frank ich benutze pymysql und es funktioniert, aber wie kann ich meine Werte von CSV mit Datenbanktabelle vergleichen –

+0

können Sie ein Beispiel über CSV und Tabellen geben? – Frank

Antwort

1

Vielleicht können Sie wie folgt tun:

import csv 
import pymysql 

path = '/home/abi/Downloads' 

conn = pymysql.connect(host='127.0.0.1', port=3306, user='user',     
passwd='pass', db='db_name', charset='utf8') 
cursor1 = conn.cursor() 
cursor2 = conn.cursor() 
cursor3 = conn.cursor() 

file=open(path +"university.CSV", "r") 
reader = csv.reader(file) 
for line in reader: 
    csv_school_name = line[0] 
    csv_school_type = line[3] 
    cursor1.execute("select id from schools_names where school_name = s%", csv_school_name) 
    corresponding_school_name_id = cursor1.fetchone() 
    cursor2.execute("select id from schools_types where school_type = s%", csv_school_type) 
    corresponding_school_type_id = cursor2.fetchone() 

Nach diesem erhalten Sie school_name_id und school_type_id können, dann können Sie diese zwei IDs in die Tabelle einfügen, wenn Sie tun möchten. Ich hoffe, das kann dir helfen.

Sie

cursor1.execute("select id from schools_names where school_name = s%", csv_school_name) 

ont Zeit ausführen müssen, dann verwenden fetchone(), wenn Sie

school_id = cursor1.execute("select id from schools_names where school_name = s%", csv_school_name) 

verwenden, werden Sie Anzahl der Tabelle erhalten.

+0

es arbeitete frank, aber es zeigt die Gesamtzahl der Schule Tisch statt ID, das ist, was ich im Moment überprüfe ... Vielen Dank, einige meiner Zweck gelöst –

+0

Entschuldigung störe dich wieder Ich benutze deine Abfrage, aber es gibt einen Müllwert in der Ausgabe aus ... 0 0 0 0 0 0 0 0 0 0 0 1 Also, passiert es, weil einige der Schulnamen auf Arabisch sind? –

Verwandte Themen