programing

MariaDB에 Python Dict 삽입 중 오류 1064 발생

powerit 2023. 6. 12. 21:57
반응형

MariaDB에 Python Dict 삽입 중 오류 1064 발생

아래와 같이 structured_files 변수의 딕트를 갖는 것;

structured_files = {'158795_1635509614542_20211029151335135_27.1943_38.4319.jpg': ['158795', '1635509614542', '20211029151335135', '27.1943', '38.4319'], '2773170_1635255851988_20211026164412576_27.1836_38.4777.jpg': ['2773170', '1635255851988', '20211026164412576', '27.1836', '38.4777'], '2777171_1635330525915_20211027132846547_27.1875_38.4720.jpg': ['2777171', '1635330525915', '20211027132846547', '27.1875', '38.4720'], '2779392_1635150026780_20211025112027410_27.1627_38.4724.jpg': ['2779392', '1635150026780', '20211025112027410', '27.1627', '38.4724'], '3724797_1634893471399_20211022120432057_27.1334_38.5426.jpg': ['3724797', '1634893471399', '20211022120432057', '27.1334', '38.5426'], '5218186_1635161250087_20211025142730572_27.0694_38.4943.jpg': ['5218186', '1635161250087', '20211025142730572', '27.0694', '38.4943'], '5347212_1634987405913_20211023141006566_27.0454_38.5138.jpg': ['5347212', '1634987405913', '20211023141006566', '27.0454', '38.5138'], '8174846_1635335281021_20211027144801672_27.1039_38.3572.jpg': ['8174846', '1635335281021', '20211027144801672', '27.1039', '38.3572'], '9179383_1635321573332_20211027105933968_27.1251_38.3576.jpg': ['9179383', '1635321573332', '20211027105933968', '27.1251', '38.3576']}

mysql db 코드에 삽입을 시도하는 것은 다음과 같습니다; 생성을 위해;

Qcreate1 = "CREATE TABLE data_11 (id_key LONGTEXT NOT NULL, name VARCHAR(50) NOT NULL, date VARCHAR(50) NOT NULL, sample VARCHAR(50) NOT NULL, coord_y VARCHAR(50) NOT NULL, coord_x VARCHAR(50) NOT NULL, created datetime NOT NULL, key_id int PRIMARY KEY NOT NULL AUTO_INCREMENT )"

삽입용;

cols = list(structured_files.keys())
vals = list(structured_files.values())

Q1 = f"INSERT INTO data_11 {cols} values {vals}"

mycursor.execute(Q1)

다음과 같은 오류가 표시됩니다.mysql.connector.errors.ProgrammingError: 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '['158795_1635509614542_20211029151335135_27.1943_38.4319.jpg', '2773170_16352...' at line 1

왜 그런 것일까요?

좋아요, 당신이 원하는 것을 하기 위해 이 코드를 테스트했습니다.

Q1 = "INSERT INTO data_11 (id_key, name, date, sample, coord_y, coord_x) VALUES (%s, %s, %s, %s, %s, %s)"

for id_key, values in structured_files.items():
    cursor.execute(Q1, [id_key] + values)

cnx.commit()

팁:

  • INSERT 문에 열 이름을 명시적으로 기록합니다.INSERT 구문 학습:

    INSERT INTO <table> (<columns>) VALUES (<values>)
    

    당신의.id_key딕트의 키는 열 이름이 아닙니다.그것은 가치 중 하나이기 때문에, 그것은 그것에 속합니다.VALUES

    한 행을 삽입하기 위한 구문입니다.이 작업에 익숙해지면 다중 행 INSERT 구문을 탐색할 수 있습니다.

  • 변수를 INSERT 문자열로 보간하는 데 f-string을 사용하지 마십시오. SQL 주입 결함이 발생할 수 있습니다.표시한 대로 값을 자리 표시자로 둔 다음 두 번째 인수의 목록으로 값을 별도로 전달합니다.cursor.execute().

언급URL : https://stackoverflow.com/questions/72734645/inserting-python-dict-to-mariadb-giving-error-1064

반응형