programing

MySQLDB Python 삽입 %d 및 %s

yellowcard 2023. 11. 6. 21:44
반응형

MySQLDB Python 삽입 %d 및 %s

전구체:

MySQL Table created via:
CREATE TABLE table(Id INT PRIMARY KEY NOT NULL, Param1 VARCHAR(50))

기능:

.execute("INSERT INTO table VALUES(%d,%s)", (int(id), string)

출력:

TypeError: %d format: a number is required, not a str

무슨 일인지, 왜 명령을 실행할 수 없는지 잘 모르겠습니다.이것은 파이썬에서 MySQLdb를 사용하는 것입니다..execute커서 개체에서 수행됩니다.

편집:

질문:Python MySQLdb 문제(TypeError: %d 형식: str이 아닌 숫자가 필요함)에서 다음을 사용해야 한다고 말합니다.%s모든 분야에 대하여이게 왜 일까요?이 명령이 작동하는 이유는 무엇입니까?

.execute("INSERT INTO table VALUES(%s,%s)", (int(id), string)

쿼리를 실행하는 동안 전체 쿼리가 문자열 형식이어야 하므로,%s사용해야 할...

쿼리가 실행되면 정수 값이 유지됩니다.

그러니까 대사가.

.execute("INSERT INTO table VALUES(%s,%s)", (int(id), string))

설명은 여기 있습니다.

형식 문자열은 일반적인 Python 형식 문자열이 아닙니다.항상 모든 필드에 %s을(를) 사용해야 합니다.

저는 dev.mysql.com 에서 해결책을 찾았습니다.간단히 말해서, a를 사용합니다.dict, 한푼도tuple의 두 번째 매개변수에서.execute():

add_salary = ("INSERT INTO salaries "
              "(emp_no, salary, from_date, to_date) "
              "VALUES (%(emp_no)s, %(salary)s, %(from_date)s, %(to_date)s)")

data_salary = {
  'emp_no': emp_no,
  'salary': 50000,
  'from_date': tomorrow,
  'to_date': date(9999, 1, 1),
}

cursor.execute(add_salary, data_salary)

당신이 놓쳤군요.'%'문자열 형식으로

"(INSERT INTO table VALUES(%d,%s)"%(int(id), string))

언급URL : https://stackoverflow.com/questions/20463333/mysqldb-python-insert-d-and-s

반응형