請幫幫我。我正在編寫一個 cdr avaya 日志解析器,將數據寫入 mysql 數據庫。解析器本身工作正常,但它不寫入數據庫。程序本身是用python 3.7編寫的,分為2個文件。cdr.py 解析器本身和 db.py 數據庫記錄文件。它會產生這樣的錯誤:pymysql.err.ProgrammingError: (1064, "您的 SQL 語法有錯誤;請查看與您的 MySQL 服務器版本相對應的手冊,了解在 '-dur, in-trk-code, in-crt- 附近使用的正確語法id, 代碼使用, out-crt-id, clg-num-in-tag, dialed-num,' 在第 1 行")所有表字段均為 INT 類型,可以寫入 NULL。cdr.pyimport socketimport 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.pyimport pymysql.cursorsdef 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()
1 回答

繁華開滿天機
TA貢獻1816條經驗 獲得超4個贊
您需要在包含-
.
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"
有關更多詳細信息,請參閱MySQL 中何時使用單引號、雙引號和反引號
添加回答
舉報
0/150
提交
取消