Я пытаюсь обновить MySQL через dataframe с помощью кортежа, но я застрял, я не знаю, в чем проблема в базе mydata или с моим кодом
, и это весь мой код, который я использую
from sqlalchemy import create_engine
import pandas as pd
import os
import csv
import MySQLdb
from sqlalchemy import types, create_engine
# MySQL Connection
MYSQL_USER = 'root'
MYSQL_PASSWORD = 'xxxxxxxxxx'
MYSQL_HOST_IP = '127.0.0.1'
MYSQL_PORT = 3306
MYSQL_DATABASE = 'mydb'
engine = create_engine
('mysql+mysqlconnector://'+MYSQL_USER+':'+MYSQL_PASSWORD+'@'+MYSQ
L_HOST_IP+':'+str(MYSQL_PORT)+'/'+MYSQL_DATABASE, echo=False)
mydir = (os.getcwd()).replace('\\', '/') + '/'
all_data = pd.read_sql('SELECT * FROM govtracker', engine)
# .drop(['#'], axis=1)
myOutlook_inBox = pd.read_csv(r'' + mydir + 'test.CSV', usecols=['Subject',
'Body', 'From: (Name)', 'To: (Name)'],
encoding='latin-1')
myOutlook_inBox.columns = myOutlook_inBox.columns.str.replace(' ', '')
#this object extract 5 chars and 5 numbers from specific column in csv
replaced_sbj_value = myOutlook_inBox['Subject']
.str.extract(pat='(L(?:DEL|CAI|SIN).\d{5})').dropna()
#this columns I want to filter in database
myOutlook_inBox["Subject"] = replaced_sbj_value
# this conditions filters and get and dublicate repeated data from outlook
exported file
# Condition 1: any mail from mowafy to te
frm_mwfy_to_te = myOutlook_inBox.loc[myOutlook_inBox['From:
(Name)'].str.contains("mowafy", na=False)
& myOutlook_inBox['To:
(Name)'].str.contains("te", na=False)].drop_duplicates(
keep=False)
#Condition 2: any mail from pp to mowafy
frm_pp_to_mwfy = \
myOutlook_inBox.loc[myOutlook_inBox['From:(Name)'].str.contains("Amr Mohamed
Abuella barakat", na=False)] \
| myOutlook_inBox.loc[myOutlook_inBox['From:(Name)'].str.contains("Reham",
na=False)] \
| myOutlook_inBox.loc[myOutlook_inBox['From:(Name)'].str.contains("Hany",
na=False)] \
| myOutlook_inBox.loc[myOutlook_inBox['From:(Name)'].str.contains("Ossama
Monir", na=False)] \
& myOutlook_inBox.loc[myOutlook_inBox['To:(Name)'].str.contains("mowafy",
na=False)].drop_duplicates(keep=False)
#Condition 3: any mail from TE to mowafy
frm_te_to_mwfy = \
myOutlook_inBox.loc[myOutlook_inBox['From:(Name)'].str.contains("te",
na=False)] & \
myOutlook_inBox.loc[myOutlook_inBox['To:(Name)'].str.contains("mowafy",
na=False)].drop_duplicates(keep=False)
frm_mwfy_to_te.Subject
filtered_data = all_data
.loc[all_data.site_code.str.contains('|'.join(frm_mwfy_to_te.Subject))]
print(myOutlook_inBox)
all_data.replace('\n', '', regex=True)
df = all_data.where((pd.notnull(all_data)), None)
print(df)
print("Success")
print(frm_mwfy_to_te.Subject)
print(filtered_data.site_code)
values = tuple(filtered_data[['site_code']].values)
query = """
UPDATE govtracker
SET pending = 'TE'
WHERE site_code in %s)
"""
connection = engine.connect()
update_db_query = connection.execute(query, values)
и это мой traceback
Traceback (most recent call last):
File "C:\Users\DELL\PycharmProjects\MyALLRefProf\venv\lib\site-
packages\sqlalchemy\engine\base.py", line 1244, in _execute_context
cursor, statement, parameters, context
File "C:\Users\DELL\PycharmProjects\MyALLRefProf\venv\lib\site-
packages\sqlalchemy\engine\default.py", line 550, in do_execute
cursor.execute(statement, parameters)
File "C:\Users\DELL\PycharmProjects\MyALLRefProf\venv\lib\site-
packages\mysql\connector\cursor.py", line 543, in execute
"Not all parameters were used in the SQL statement")
mysql.connector.errors.ProgrammingError: Not all parameters were used in
the SQL statement
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "C:/Users/DELL/PycharmProjects/MyALLRefProf/MyAutomationFuncs.py",
line 92, in <module>
update_db_query = connection.execute(query, values)
File "C:\Users\DELL\PycharmProjects\MyALLRefProf\venv\lib\site-
packages\sqlalchemy\engine\base.py", line 982, in execute
return self._execute_text(object_, multiparams, params)
File "C:\Users\DELL\PycharmProjects\MyALLRefProf\venv\lib\site-
packages\sqlalchemy\engine\base.py", line 1155, in _execute_text
parameters,
File "C:\Users\DELL\PycharmProjects\MyALLRefProf\venv\lib\site-
packages\sqlalchemy\engine\base.py", line 1248, in _execute_context
e, statement, parameters, cursor, context
File "C:\Users\DELL\PycharmProjects\MyALLRefProf\venv\lib\site-
packages\sqlalchemy\engine\base.py", line 1466, in _handle_dbapi_exception
util.raise_from_cause(sqlalchemy_exception, exc_info)
File "C:\Users\DELL\PycharmProjects\MyALLRefProf\venv\lib\site-
packages\sqlalchemy\util\compat.py", line 383, in raise_from_cause
reraise(type(exception), exception, tb=exc_tb, cause=cause)
File "C:\Users\DELL\PycharmProjects\MyALLRefProf\venv\lib\site-
packages\sqlalchemy\util\compat.py", line 128, in reraise
raise value.with_traceback(tb)
File "C:\Users\DELL\PycharmProjects\MyALLRefProf\venv\lib\site-
packages\sqlalchemy\engine\base.py", line 1244, in _execute_context
cursor, statement, parameters, context
File "C:\Users\DELL\PycharmProjects\MyALLRefProf\venv\lib\site-
packages\sqlalchemy\engine\default.py", line 550, in do_execute
cursor.execute(statement, parameters)
File "C:\Users\DELL\PycharmProjects\MyALLRefProf\venv\lib\site-
packages\mysql\connector\cursor.py", line 543, in execute
"Not all parameters were used in the SQL statement")
sqlalchemy.exc.ProgrammingError: (mysql.connector.errors.ProgrammingError)
Not all parameters were used in the SQL statement
[SQL:
UPDATE govtracker
SET pending = 'TE'
WHERE site_code in %s)
]
[parameters: ('LCAIE30089', 'LSINI16321')]
(Background on this error at: http://sqlalche.me/e/f405)
Теперь я кратко объясню свой код и ситуацию
Итак, после того как я создал соединение и прочитал с пандами, я началсоздайте условие, которое фильтрует это условие, и извлекли какое-то значение из кадра данных pandas, поскольку в результате столбец данных содержит несколько значений, поэтому теперь я использовал этот вывод для фильтрации в своей базе данных с помощью Join, поэтому теперь я хочу обновить столбцы come в зависимости отзначение, которое я отфильтровал с помощью кортежей, и создал простой запрос, но я застрял и обнаружил эту ошибку. Поэтому, если кто-нибудь сможет помочь мне решить этот случай, я буду ему благодарен
надеюсь, что вседостаточно ясно