Вставить несколько текстовых файлов с разделителями табуляции в MySQL с Python?

0

Я новичок в программировании и программировании на Python в целом, так голый со мной.

Я пытаюсь создать программу, которая принимает несколько текстовых файлов с разделителями вкладок, и работает через них по одному, забирая данные, которые они хранят в базе данных MySQL. Существует несколько текстовых файлов, таких как movies.txt, которые выглядят следующим образом:

1   Avatar
3   Iron Man
3   Star Trek

и players.txt, которые выглядят одинаково и т.д. Каждый текстовый файл имеет более ста записей, каждый с идентификатором и соответствующим значением, как показано выше. Я нашел несколько примеров кода на этом сайте и других, но я не могу понять, как их реализовать в этой ситуации.

Пока мой код выглядит примерно так:

import MySQLdb

database_connection = MySQLdb.connect(host='localhost', user='root', passwd='')

cursor = database_connection.cursor()

cursor.execute('CREATE DATABASE library')

cursor.execute('USE library')

cursor.execute('''CREATE TABLE popularity (
                    PersonNumber INT,
                    Category VARCHAR(25),
                    Value VARCHAR(60),
                    )
                    ''')

def data_entry(categories):

Каждый раз, когда я пытаюсь получить другой код, который нашел с ним, я просто полностью потерялся. Надеюсь, кто-то может помочь мне, показывая мне, что мне нужно сделать, или указывая мне в сторону какой-то дополнительной информации.

Любая помощь будет принята с благодарностью.

Спасибо

Примеры кода, который я пытался адаптировать к моей ситуации:

import MySQLdb, csv, sys
conn = MySQLdb.connect (host = "localhost",user = "usr", passwd = "pass",db = "databasename")
c = conn.cursor()
csv_data=csv.reader(file("a.txt"))
for row in csv_data:
print row
c.execute("INSERT INTO a (first, last) VALUES (%s, %s), row")
c.commit()
c.close()

и

Чтение файла Python + Запись

  • 0
    Попробуйте переместить « во втором примере, чтобы строка передавалась в вызов execute. C.execute (« INSERT INTO a (first, last) VALUES (% s,% s) », row) Эта ссылка содержит несколько примеров выполнения . mysql-python.sourceforge.net/MySQLdb.html#connection-objects
Теги:

1 ответ

1

MySQL может читать TSV файлы напрямую с помощью утилиты mysqlimport или путем выполнения команды LOAD DATA INFILE SQL. Это будет быстрее, чем обработка файла на python и его вставка, но вы можете узнать, как это сделать. Удачи!

  • 0
    Благодарю. Итак, это действительно помогло. Я изучаю Python больше, чем SQL, поэтому я хотел бы сделать это с Python, даже если он медленнее. Теперь у меня есть cursor.execute («LOAD DATA LOCAL INFILE» movies.txt «INTO TABLE Popular FIELDS TERMINATED BY '\\ t' LINES TERMINATED BY '\\ n'»), что-то вроде работы. Я получаю данные, но не удаляя категорию VARCHAR (25), которая мне действительно нужна. Мне нужно как-то заполнить категорию именами файлов, например, фильмы, ТВ и т. Д., Чтобы это работало. Я знаю, должно быть очевидно, что мне нужно делать, но я не могу найти работу. Спасибо за помощь.
  • 2
    Поместите свой столбец категории последним: LOAD DATA LOCAL INFILE 'movies.txt' INTO TABLE popularity FIELDS TERMINATED BY '\\t' LINES TERMINATED BY '\\n (PersonNumber, Category, Value) SET Category =' Movies'` установит Категория для каждой строки.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню