programing

여러 스크립트에서 Mariadb에 삽입

starjava 2023. 8. 25. 23:10
반응형

여러 스크립트에서 Mariadb에 삽입

그래서 현재 저는 파이썬을 사용하여 매 시간마다 센서 데이터를 기상 데이터베이스에 삽입하는 스크립트가 하나 있습니다.

이제 강우 데이터를 매 시간마다 같은 테이블에 추가하는 두 번째 스크립트를 추가했습니다.

이제 문제는:두 번째 스크립트가 삽입되면 다른 모든 값이 '제로'가 됩니다.그라파나로 표시됩니다.

내가 어딘가에 덮어쓰고 있거나, 누군가가 나를 올바른 방향으로 가리켜 줄 수 있다면.

날씨 센서가 문을 삽입합니다.

 sql=("INSERT INTO WEATHER_MEASUREMENT (AMBIENT_TEMPERATURE, AIR_PRESSURE, HUMIDITY) VALUES ({},{},{})".format(temperature,pressure,humidity))
         mycursor.execute(sql)
         weatherdb.commit()

강우 센서 삽입

sql=("INSERT INTO WEATHER_MEASUREMENT (RAINFALL) VALUES ({})".format(rainfall))
mycursor.execute(sql)
weatherdb.commit()

내가 제대로 이해했는지 알려주세요: "WEATHER_MEASUREMENT" 테이블에는 4개의 열(부품 ID)이 있습니다: 주변 온도, 공기 압력, 습도 및 강우.CLOUP 값을 추가하면 테이블에 다른 열 값이 "NULL"인 새 행이 생성되는데 이것이 문제입니까?이 경우 다음과 같은 쿼리를 사용하여 기존 행을 업데이트할 수 있습니다.

sql = ("""
          UPDATE _ WEATHER_MEASUREMENT
          SET RAINFALL = "{}"
          WHERE id_of_the_row = {}
          """.format(rainfall, id)
mycursor.execute(sql)

날씨 센서 삽입 문으로 방금 만든 행의 ID를 확인하는 방법을 찾아야 합니다(시기가 확실한 경우 마지막으로 삽입한 행을 검색할 수도 있습니다).

/!\NOTE/!\victor-stafusa-bozonacadeia의 코멘트에서 언급한 바와 같이 형식화된 문자열로 만들어진 SQL 요청은 SQL 주입에 취약합니다.포맷에 사용되는 변수가 코드에서 오고 안전한 것으로 알려진 경우에만 안전하게 사용할 수 있습니다.변수 내용이 사용자 입력과 같이 외부에서 오는 경우 문자열 형식 지정을 사용하지 마십시오.

쿼리 내용이 출처가 불분명한 경우 "쿼리를 검사"해야 합니다.찾은 요청을 검사할 수 있는 원시 SQL 요청에 가장 가까운 방법은 "text" 쿼리와 "bind parameters"가 있는 sqlalchemy 모듈을 사용하는 것입니다.자세한 내용은 여기에서 확인할 수 있습니다. https://docs.sqlalchemy.org/en/20/core/sqlelement.html#sqlalchemy.sql.expression.text

언급URL : https://stackoverflow.com/questions/64497915/inserting-to-mariadb-from-multiple-scripts

반응형