Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / PHP, Perl, Python Новый топик    Ответить
 mysql.connector запись в базу  [new]
Areostar
Member

Откуда:
Сообщений: 3292
имеется код:

    def insertData(self, dataset):
        __dataset = list()
        for item in dataset:
            __dataset.append([item["firstName"], item["secondName"], item["password"], item["hash"], item["date"]])

        self.connect = mysql.connector.connect(user='root', password='qx5sf5zvfk', host='127.0.0.1', database='testdb')

        sql_insert_query = """ INSERT INTO test_table (first_name, second_name, password, hash, full_date) 
                            VALUES (%s,%s,%s,%s,%s) """

        cursor = self.connect.cursor(prepared=True)
        result = cursor.executemany(sql_insert_query, __dataset)
        self.connect.commit()

        cursor.close()
        self.connect.close()


В Pycharm всё работает.

Пытаюсь запустить на сервере получаю ощибку

автор
File "/home/dev/web/dev-angar.com/public_html/transformData/classes/mysqlConvert.py", line 20, in insertData
cursor = self.connect.cursor(prepared=True)
File "/usr/lib64/python3.6/site-packages/mysql/connector/connection_cext.py", line 479, in cursor
return (types[cursor_type])(self)
File "/usr/lib64/python3.6/site-packages/mysql/connector/cursor_cext.py", line 820, in __init__
"Alternative: Use connection.MySQLCursorPrepared")
NotImplementedError: Alternative: Use connection.MySQLCursorPrepared


Что не так в коде?
15 янв 19, 10:06    [21785399]     Ответить | Цитировать Сообщить модератору
 Re: mysql.connector запись в базу  [new]
Лысый дядька
Member

Откуда:
Сообщений: 283
Areostar
В Pycharm всё работает.


Неинформативно. Одинаковые ли версии питона в Pycharm и на сервере? Одинакова ли версия библиотеки? Подключаетесь ли вы к одной и той же БД или к разным?
15 янв 19, 11:18    [21785449]     Ответить | Цитировать Сообщить модератору
 Re: mysql.connector запись в базу  [new]
Лысый дядька
Member

Откуда:
Сообщений: 283
Areostar
Что не так в коде?


Да много что не так, на самом деле. Вот, например, зачем вы создаете атрибут объекта self.connect если он создается и живет только в пределах одного метода? Почему это не локальная переменная метода? Зачем подчеркивания у __dataset, это же локальная переменная она не может быть не приватной. Зачем тут executemany вообще?
15 янв 19, 11:21    [21785452]     Ответить | Цитировать Сообщить модератору
 Re: mysql.connector запись в базу  [new]
Лысый дядька
Member

Откуда:
Сообщений: 283
А ошибка эта гуглится за четыре секунды
https://stackoverflow.com/questions/50535192/i-get-notimplementederror-when-trying-to-do-a-prepared-statement-with-mysql-pyth
15 янв 19, 11:22    [21785455]     Ответить | Цитировать Сообщить модератору
 Re: mysql.connector запись в базу  [new]
Areostar
Member

Откуда:
Сообщений: 3292
Лысый дядька,

Версия питона таже. база тоже(полностью аналогичная)
15 янв 19, 12:20    [21785529]     Ответить | Цитировать Сообщить модератору
 Re: mysql.connector запись в базу  [new]
Areostar
Member

Откуда:
Сообщений: 3292
поменял так заработало

автор
self.connect.commit()
15 янв 19, 15:44    [21785836]     Ответить | Цитировать Сообщить модератору
Все форумы / PHP, Perl, Python Ответить