Я пытаюсь вернуть данные из 2 отдельных баз данных, используя серийные номера (2 базы данных используют разные форматы серийных номеров для одних и тех же физических частей (одна имеет номер детали, предшествующий фактическому серийному номеру), поэтому сейчас я использую2 входа, пока я не смогу подтвердить, что запросы работают нормально).я смог заставить весь сценарий выполняться с использованием одного последовательного порта, но при его копировании он прочитал бы только первый серийный номер в строке, когда я попробовал несколько.после изменения нескольких вещей, кажется, что входные данные будут правильными, если вставить их в рабочую среду MySQL, но скрипт по какой-то причине не будет их читать.это немного выходит из моей лиги на то, что пошло не так, как я чрезвычайно новичок в Python.
Я всюду искал ответ на этот вопрос, но большинство людей не используют список из пользовательского ввода, поэтому я немного озадачен тем, как использовать эту информацию, чтобы применить к моей текущей проблеме
import mysql.connector
import xlsxwriter
import datetime
ogserials = input_string = input('Paste QR serials now')
ogserials = input_string.split(",")
newserials = input_string = input('paste CT serials now')
newserials = input_string.split(",")
print(ogserials)
print(newserials)
mos_cnx = mysql.connector.connect(user='User',
password='Password,
host='host.com,
port=1234,
database='schema')
mos_cursor = mos_cnx.cursor()
mos_query = ("""
SELECT
t1.serial,
t2.testparametername,
t3.parameterresult,
t3.testvalue
FROM
t3
JOIN
t1 ON t3.t1id = t1.id
join t2 on t2.id= t3.t2id
WHERE
t3.parameterid = '6358150'
and t1.serial in (%s)
""")
mos_cursor.executemany(mos_query, (ogserials,))
mos_results = mos_cursor.fetchall()
mos_cursor.close()
mos_cnx.close()
combined_results = []
for i in range(len(mos_results)):
ct21_cnx = mysql.connector.connect(user='User2',
password='Password2',
host='Host2.com',
port='5678',
database='schema2’)
ct21_cursor = ct21_cnx.cursor(buffered=True)
ct21_query = ("""
SELECT
TASK_RESULT,
actor_name,
electricaltest.current,
voltage,
TOTAL_TEST_TIME
FROM
electricaltest
WHERE
electricaltest.SERIAL_NUMBER IN (%s)
""")
ct21_cursor.executemany(ct21_query, (newserials,))
ct21_results = ct21_cursor.fetchall()
ct21_cursor.close()
ct21_cnx.close()
combined_results.append((mos_results[i][0], mos_results[i][1],
mos_results[i][2], mos_results[i][3],
ct21_results[0][0], ct21_results[0][1],
ct21_results[0][2], ct21_results[0][3],
ct21_results[0][4]))
workbook = xlsxwriter.Workbook('CT data.xlsx')
time_format = workbook.add_format({'num_format': 'yyyy-mm-dd hh:mm:ss'})
counter_format = workbook.add_format({'num_format': 'hh:mm:ss'})
worksheet = workbook.add_worksheet()
headers = ['Serial', 'Test', 'Pass/Fail', 'Value', 'HiPot Pass/Fail', 'HiPot Line', 'Current', 'Voltage', 'Test Time']
for i in range(len(headers)):
worksheet.write(0, i, headers[i])
xlsx_row = 1
for row in combined_results:
for j in range(len(headers)):
worksheet.write(xlsx_row, j, row[j])
xlsx_row += 1
workbook.close()
, как указано выше, это работало с одним сериалом, а не со списком.не уверен, где я ошибся.ниже приведены коды ошибок из консоли pycharm:
Traceback (most recent call last):
File "C:\Program Files\JetBrains\PyCharm Community Edition 2019.1.2\helpers\pydev\pydevd.py", line 1758, in <module>
main()
File "C:\Program Files\JetBrains\PyCharm Community Edition 2019.1.2\helpers\pydev\pydevd.py", line 1752, in main
globals = debugger.run(setup['file'], None, None, is_module)
File "C:\Program Files\JetBrains\PyCharm Community Edition 2019.1.2\helpers\pydev\pydevd.py", line 1147, in run
pydev_imports.execfile(file, globals, locals) # execute the script
File "C:\Program Files\JetBrains\PyCharm Community Edition 2019.1.2\helpers\pydev\_pydev_imps\_pydev_execfile.py", line 18, in execfile
exec(compile(contents+"\n", file, 'exec'), glob, loc)
File "C:/Users/User/PycharmProjects/CT21 to MOS/ct 21 and MOS.py", line 35, in <module>
mos_cursor.executemany(mos_query, (ogserials,))
File "C:\Users\User\PycharmProjects\CT21 to MOS\venv\lib\site-packages\mysql\connector\cursor.py", line 675, in executemany
self.execute(operation, params)
File "C:\Users\User\PycharmProjects\CT21 to MOS\venv\lib\site-packages\mysql\connector\cursor.py", line 561, in execute
"Not all parameters were used in the SQL statement")
mysql.connector.errors.ProgrammingError: Not all parameters were used in the SQL statement