Python Селен MySQL - вставить, если идентификатор не существует - PullRequest
1 голос
/ 01 мая 2020

У меня есть этот код:

def read_excel_all_members(mycursor, mydb):
with open('.\\docs\\allMembers.csv') as allMembersCSV:
    csv_reader_object = csv.reader(allMembersCSV, delimiter=';')
    next(csv_reader_object)
    sql = "INSERT INTO allMembers (idnr, lastname, firstname) VALUES (%s, %s, %s)"
    for row in csv_reader_object:
        sql2 = 'SELECT count(*) FROM allMembers WHERE idnr =' + row[0]
        exists = mycursor.execute(sql2)
        if not exists != 0:
            val = [
                (row[0], row[1], row[2])
            ]
            mycursor.executemany(sql, val)
mydb.commit()

Но я всегда получаю сообщение об ошибке - я просто хочу вставить строку, если строка [0] не существует в данный момент?

Что не так в моем коде?

Ошибка:

  File "C:/Users/usera/PycharmProjects/untitled1/console.py", line 38, in <module>
    functions.read_excel_all_members(mycursor, mydb)
  File "C:\Users\usera\PycharmProjects\untitled1\functions.py", line 128, in read_excel_all_members
    exists = mycursor.execute(sql2)
  File "C:\Users\usera\PycharmProjects\untitled1\venv\lib\site-packages\mysql\connector\cursor.py", line 521, in execute
    self._connection.handle_unread_result()
  File "C:\Users\usera\PycharmProjects\untitled1\venv\lib\site-packages\mysql\connector\connection.py", line 1059, in handle_unread_result
    raise errors.InternalError("Unread result found")
mysql.connector.errors.InternalError: Unread result found``` 


Pls help me.

The CSV is like:

> ID;Familienname;Vorname
1538;Jakob;Schwarz

1 Ответ

0 голосов
/ 02 мая 2020

Теперь у меня есть решение:

def read_excel_all_members(mycursor, mydb):
with open('.\\docs\\allMembers.csv') as allMembersCSV:
    csv_reader_object = csv.reader(allMembersCSV, delimiter=';')
    next(csv_reader_object)
    sql = 'INSERT INTO allMembers (idnr, lastname, firstname) VALUES (%s, %s, %s)'
    for row in csv_reader_object:
        sql2 = 'SELECT count(*) FROM allMembers WHERE idnr =' + row[0]
        mycursor.execute(sql2)
        result = mycursor.fetchone()
        if result == (0,):
            val = [
                (row[0], row[1], row[2])
            ]
            mycursor.execute(sql, val[0])
mydb.commit()
...