I am using following code to update many on for my table. However that's fine working on Windows with Python but not working on my Ubuntu machine. Update many keep saying MySQL Error [-1]: Failed executing the operation; Could not process parameters
. Is there are any solution to trace what's exact causing this error?
def update_wifs(done_data):
magicwallet = mysql.connector.connect(
host="localhost",
user="dumpass",
password="dumuser",
database="magicwallet"
)
mysql_table = "magic97mil"
conn = magicwallet.cursor()
query = ""
values = []
for data_dict in done_data:
if not query:
columns = ', '.join('`{0}`'.format(k) for k in data_dict)
duplicates = ', '.join('{0}=VALUES({0})'.format(k) for k in data_dict)
place_holders = ', '.join('%s'.format(k) for k in data_dict)
query = "INSERT INTO {0} ({1}) VALUES ({2})".format(mysql_table, columns, place_holders)
query = "{0} ON DUPLICATE KEY UPDATE {1}".format(query, duplicates)
v = data_dict.values()
values.append(v)
try:
conn.executemany(query, values)
except Exception as e:
try:
print("MySQL Error [%d]: %s" % (e.args[0], e.args[1]))
except IndexError:
print("MySQL Error: %s" % str(e))
magicwallet.rollback()
return False
magicwallet.commit()
conn.close()
magicwallet.close()
return done_data
done_data coming like it. what's exact like name of the columns in my table. It's been working fine on Windows machine but keep has error on Unix
{'id': 73399, 'wif': 'uMx1VuwRT4cKQQyE', 'PublicAddress': 'p62GqtrDtRg', 'PublicAddressP2WPKH': 'dj3krprezquku7wkswv', 'phrase': '0075839', 'index_file': 73399, 'imported': 1}
{'id': 73400, 'wif': 'L1Ri4cv3vicfGbESct', 'PublicAddress': 'JfstH24WMHGZz63WEopk', 'PublicAddressP2WPKH': 'ffkt6xxgksktzzkq8ucydrn8ps', 'phrase': '007584', 'index_file': 73400, 'imported': 1}
UPD 0. query print
INSERT INTO magic97mil (
id
,wif
,PublicAddress
,PublicAddressP2WPKH
,phrase
,index_file
,imported
) VALUES (%s, %s, %s, %s, %s, %s, %s) ON DUPLICATE KEY UPDATE id=VALUES(id), wif=VALUES(wif), PublicAddress=VALUES(PublicAddress), PublicAddressP2WPKH=VALUES(PublicAddressP2WPKH), phrase=VALUES(phrase), index_file=VALUES(index_file), imported=VALUES(imported)
UPD 1. Full traceback
Traceback (most recent call last):
File "/usr/local/lib/python3.8/dist-packages/mysql/connector/cursor_cext.py", line 313, in _batch_insert
prepared = self._cnx.prepare_for_mysql(params)
File "/usr/local/lib/python3.8/dist-packages/mysql/connector/connection_cext.py", line 659, in prepare_for_mysql
raise ValueError("Could not process parameters")
ValueError: Could not process parameters
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/var/www/html/WalletMagic97mil/to_wif.py", line 76, in update_wifs
conn.executemany(query, values)
File "/usr/local/lib/python3.8/dist-packages/mysql/connector/cursor_cext.py", line 355, in executemany
stmt = self._batch_insert(operation, seq_params)
File "/usr/local/lib/python3.8/dist-packages/mysql/connector/cursor_cext.py", line 333, in _batch_insert
raise errors.InterfaceError(
mysql.connector.errors.InterfaceError: Failed executing the operation; Could not process parameters
UPD 2. Difference on windows and unix values
So the difference of print(values)
on Unix and Windows is:
Windows it's like:
[{'id': 73401, 'wif': 'iVVUsHiLPLGq3uPaPyzdQ6xFeB3', 'PublicAddress': 'nLNtv3XUiMs7f1q8vU', 'PublicAddressP2WPKH': 'epw8ae08fnjpuva7x8783', 'phrase': '0075840', 'index_file': 73401, 'imported': 1},
{'id': 73402, 'wif': 'i41ZqWgvoKbUjYsbA41A', 'PublicAddress': 'Vd1D2krnjMucjmLU9', 'PublicAddressP2WPKH': '20g4my4rm4xgt04ph8xcmgyk', 'phrase': '0075841', 'index_file': 73402, 'imported': 1}]
Unix it's like:
[dict_values([73101, 'bmgHbonEKw4LoUqmwSg', '7K77mEtoiH5x8FnmJi2', 'dx3pdppq0zgacldefnge8ea3', '0075576', 73101, 1]),
dict_values([73102, 'nojKY4pzXxJ9TeFX14vpnk', 'qkuVECaPs3WcCj', 'j5sv9q28kzaqs0m6g', '0075577', 73102, 1])]
I think maybe this is exact error
from Python "MySQL Error [-1]: Failed executing the operation; Could not process parameters"
No comments:
Post a Comment