Помогите мне, пожалуйста. Я пишу анализатор журнала cdr avaya с записью данных в базу данных mysql. Сам парсер работает нормально, но не записывает в базу данных. Сама программа написана на python 3.7 и разделена на 2 файла. Сам синтаксический анализатор cdr.py и файл записей базы данных db.py. Он выдает такую ошибку:
pymysql.err.ProgrammingError: (1064, «У вас ошибка в синтаксисе SQL; обратитесь к руководству, соответствующему вашей версии сервера MySQL, для правильного использования синтаксиса». near '-dur, in-trk-code, in-crt-id, используемый код, out-crt-id, clg-num-in-tag, набранный номер,' в строке 1 ")
Все поля таблицы имеют тип INT с возможностью записи NULL.
cdr.py
import socket
import db
# Задаем адрес сервера
SERVER_ADDRESS = ('', 5100)
# Настраиваем сокет
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(SERVER_ADDRESS)
server_socket.listen(5)
print('server is running, please, press ctrl+c to stop')
# Слушаем запросы
while True:
connection, address = server_socket.accept()
data = connection.recv(1024)
if not(b'\x00\x00\x00' in data):
str = data.decode("utf-8")
item=(str[0:6],str[7:11],str[12:17],str[18:22],str[23:26],str[27:30],str[31:34],str[35:50],str[51:74],str[75:76],str[77:90],str[91:92])
print(item)
db.write_db(item)
connection.close()
db.py
import pymysql.cursors
def write_db(item, *agrs):
connection = pymysql.connect(host='localhost',
user='acdr',
password='it8ejokd',
db='avaya_cdr',
charset='utf8mb4',
cursorclass=pymysql.cursors.DictCursor)
DBTBL = "cdr102019"
DBFLD = "Date, Time, Sec-dur, in-trk-code, in-crt-id, code-used, out-crt-id, clg-num-in-tag, dialed-num, cond-code, vdn, frl"
try:
with connection.cursor() as cursor:
sql = "INSERT INTO "+DBTBL+" ("+DBFLD+") VALUES (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)"
cursor.execute(sql, (item))
connection.commit()
finally:
connection.close()