есть две таблицы books_name (каталог книг) и author_name (список авторов книг), author_id обеех таблиц связаны
–books_name———-
book_name | author_id
—————————-
–author_name_list———–
author_id | author_name
——————————
есть файл с таблицей название_книги, автор книги (в разных названиях книг может быть один и тот же автор)
нужно сформировать запрос так чтобы проверялось внесено ли имя автора в таблицу author_name если не внесено то вносилос и связывалось author_id
Подскажите как сформировать запрос по добавлению даных за один sql-запрос
я бы сделал так
import MySQLdb def add_book(book_name, author_name): con = MySQLdb.connect(host='127.0.0.1', user='root', passwd='toor', db='books') con.autocommit(1) con.set_character_set('utf8') cur = con.cursor() cur.execute(""" SELECT `author_id` FROM `author_name_list` WHERE author_name = ('%(author_namey)s')% {'author_name':author_name}""") author_id_fetched = cur.fetchone() cur.close() if not author_id_fetched: cur = con.cursor() cur.execute(""" INSERT INTO `author_name_list` (`author_name`) VALUES ('%(author_name)s')% {'author_name':author_name}""") cur.close() author_id = str(con.insert_id()) else: author_id = author_id_fetched[0] cur = con.cursor() cur.execute(""" INSERT INTO `books_name` (`book_name`, `author_id`) VALUES ('%(book_name)s', '%(author_id)s')% {'author_name':author_name, 'author_id':author_id}""") cur.close() con.close()