2017-02-23 2 views
1

MySQLdb 파이썬 패키지를 사용하여 MySQL 데이터베이스에 값을 추가하려고합니다. 일부 열은 null 일 수 없으며 테이블에 데이터를 추가하기 전에 어떤 열 값이 있어야하는지 확인하는 방법을 찾기 위해 고심하고 있습니다. 내가 파일을 구문 분석하는 데 순간 는, 키의 수를 추출, 값 쌍은 사용하여 추가 한 후 다음을 추가해야하는 테이블 운동과 :MySQLdb를 사용하는 Python에서 MySQL

cursor.execute("""INSERT INTO %s (%s) VALUES (\"%s\")""" %(tbl, cols, vals) 

나는 확실히 내가 추가 할 수 있습니다 올바른 순서로 열을 추가하고 서로 다른 테이블을 연결하는 자동 증가 ID를 얻을 수 있습니다. 내가하고 싶은 것은 각 테이블에 대해 null이 아닌 열이 포함되어 있는지 확인한 다음 필요할 경우 테이블에 값을 추가하기 전에 그에 따라 입력 값을 수정하는 것입니다. 내가 이것을 할 수있는 방법에 대한 제안/더 좋은 아이디어?

답변

1

INFORMATION_SCHEMA.COLUMNS 테이블을 MySQL에서 테스트하여 열에서 NULL 값을 허용하는지 확인할 수 있습니다.

SELECT `IS_NULLABLE` 
FROM INFORMATION_SCHEMA.`COLUMNS` 
WHERE `TABLE_SCHEMA` = 'SchemaName' 
AND `TABLE_NAME` = tbl 
AND `COLUMN_NAME` = col 
; # returns YES/NO 

당신은 매개 변수를 전달하기보다는 텍스트 SQL에서 그것을 하드 코딩하기 위해 cursor.execute(stmt, [params]) 구문의 문법을 개선해야한다. 이것은 훨씬 더 신뢰할 수있을 것입니다 :

sql = "INSERT INTO %s (%s)" % (tbl, col) 
sql += " VALUES(%s)" 
cursor.execute(sql, [val]) 
connection.commit() 

MySQL Docs for cursor.execute

+0

감사합니다, 나는 파이썬에서 MySQL의 명령을 실행 한 다음 (YES/NO) 내가 더 추가해야하는지 여부를 결정하기 위해 반환 값을 사용하지 않고 있어요 열/값. 문법 조언을 주셔서 감사합니다. – Conor

관련 문제