2016-03-13 2 views
0

У меня есть текстовый файл с данными, подобными приведенным ниже;Проблемы с сортировкой кода

South-America; Raul; Segio; 31; 34234556 
Africa; Kofi; Adama; 27; 65432875 
North-America; James; Watson; 29; 43552376 
Africa; Koko; Stevens; 23; 23453243 
Europe; Anthony; Baker; 32; 89878627 
+0

ОК, где запрос, который вставляет данные в таблицу? – Sergius

+0

Вам следует дважды проверить отступы. –

ответ

1

Ну, причины, по которым это происходит, - это то, что строка создания не попадает в цикл for. Поскольку Europe является последним элементом в таблице, он является единственным, который выполняется.

Вы хотите переместить выполнение в пределах цикла, вдоль линий:

mydb = MySQLdb.connect(host="127.0.0.1",user="root",passwd="12345678*",db="TESTDB1") 
cursor = mydb.cursor() 

with open('data.txt', 'r') as z: 
    for line in z: 
     m = {} 
     (m['0'], m['1'], m['2'], m['3']) = line.split(";") 
     Table = m['0'] 

     sql = "CREATE TABLE IF NOT EXISTS " +Table+ " (name char(40), lastname char(40), age int (3), code int (10))" 
     cursor.execute(sql) 
mydb.close() 

т.е. сначала создать базу данных, а затем цикл по вставке каждому из таблиц, которые вы желаете, а затем закройте его.

Другим способом было бы просто вставить нижнюю половину кода.

+0

Пробовал и получил, ..........._ mysql_exceptions.ProgrammingError: (1064, «У вас есть ошибка в синтаксисе SQL, проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с '-afi (name char (40), lastname char (40), petname char (40))' в строке 1 ") – max10

+0

Я подозреваю, что вы можете что-то делать с вами, используя тире в некоторых именах таблиц .. Попробуйте удалить даахи – kyrenia