Я добавлял свой ответ, который работает но открыты для УЛУЧШЕНИЯMySQL не принимает executemany() INSERT, работает Python из Excel (datanitro)
После просмотра проекта в datanitro. Я взял на себя подключение к MySQL (они используют SQLite), и я смог импортировать небольшую тестовую таблицу в Excel из MySQL.
Вставка новых обновленных данных из листа Excel была эта следующая задача, и до сих пор я могу получить один ряд, чтобы работать, как так ...
import MySQLdb
db = MySQLdb.connect("xxx","xxx","xxx","xxx")
c = db.cursor()
c.execute("""INSERT INTO users (id, username, password, userid, fname, lname)
VALUES (%s, %s, %s, %s, %s, %s);""",
(Cell(5,1).value,Cell(5,2).value,Cell(5,3).value,Cell(5,4).value,Cell(5,5).value,Cell(5,6).value,))
db.commit()
db.close()
... но попытки несколько строк не получится. Я подозреваю, что у вас есть проблемы при перемещении строк в Excel. Вот то, что я до сих пор ...
import MySQLdb
db = MySQLdb.connect(host="xxx.com", user="xxx", passwd="xxx", db="xxx")
c = db.cursor()
c.execute("select * from users")
usersss = c.fetchall()
updates = []
row = 2 # starting row
while True:
data = tuple(CellRange((row,1),(row,6)).value)
if data[0]:
if data not in usersss: # new record
updates.append(data)
row += 1
else: # end of table
break
c.executemany("""INSERT INTO users (id, username, password, userid, fname, lname) VALUES (%s, %s, %s, %s, %s, %s)""", updates)
db.commit()
db.close()
... как сейчас, я не получаю никаких ошибок, но моя новая строка не добавляется (ID 3). Это то, что моя таблица выглядит в Excel ...
база данных имеет ту же структуру, минус идентификатор 3. Там должен быть более простой способ обхода строк и тянуть уникальный контент для вставки , но через 6 часов, пробовав разные вещи (и две новые книги Python), я попрошу о помощи.
Если я бегу либо ...
print '[%s]' % ', '.join(map(str, updates))
или
print updates
мой результат
[]
Так что это, скорее всего, не пропуская никаких данных в MySQL в первую очередь ,
ПОСЛЕДНЕЕ ОБНОВЛЕНИЕ И РАБОЧАЯ SCRIPT
Не совсем то, что я хочу, но это работает для меня ...
c = db.cursor()
row = 2
while Cell(row,1).value != None:
c.execute("""INSERT IGNORE INTO users (id, username, password, userid, fname, lname)
VALUES (%s, %s, %s, %s, %s, %s);""",
(CellRange((row,1),(row,6)).value))
row = row + 1
Можете ли вы исправить отступы в коде? –