반응형
다음 코드를 사용하여 Python을 통해 테이블에 값을 삽입하려고합니다.
db = MySQLdb.connect(host="localhost",user="root",passwd="", db="x")
db.autocommit(True)
cur = db.cursor()
query = """INSERT INTO b (source_id,text,author,score,type,location) VALUES (%s,%s,%s,%s,%s,%s)""" % (1,Tweet.text,User.screen_name,score,search_type,User.location)
print query
cur.execute(query)
인쇄 출력에서 모든 변수 값으로 쿼리 문자열이 제대로 채워지는 것을 봅니다 (특수 문자로 아무것도하지 않음). 그러나 값은 단순히 데이터베이스에 삽입되지 않습니다. 내 테이블은 다음과 같습니다.
| freebee | CREATE TABLE `b` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`source_id` int(5) NOT NULL,
`text` varchar(255) NOT NULL,
`author` varchar(120) DEFAULT NULL,
`score` tinyint(3) NOT NULL,
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`start_date` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
`end_date` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
`type` enum('food','event','stuff') NOT NULL,
`location` varchar(120) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=132 DEFAULT CHARSET=latin1 |
특히 AUTO_INCREMENT는 132로 설정되어 있습니다. 몇 분 전에 수동으로 삽입 쿼리를 테스트했는데 ID # 132로 입력되었습니다. 내 파이썬 스크립트를 통해 131 번 삽입하려고 시도했지만 실패했지만 id 키가 계속 증가한다는 것을 의미합니다. 감사합니다.
해결 방법
코드가 잘못된 것 같습니다.
query = """INSERT INTO b (source_id,text,author,score,type,location) VALUES (%s,%s,%s,%s,%s,%s)"""
print query
cur.execute(query, (1,Tweet.text,User.screen_name,score,search_type,User.location))
또는 VALUES (% s)
의 텍스트는 ** VALUES ( '% s', '% s') % ( 1, 2)
query = """INSERT INTO b (source_id,text,author,score,type,location) VALUES ('%s','%s','%s','%s','%s','%s')""" % (1,Tweet.text,User.screen_name,score,search_type,User.location)
print query
cur.execute(query)
참조 페이지 https://stackoverflow.com/questions/19879979
반응형
'MySql' 카테고리의 다른 글
MySQL Firebird 데이터베이스를 SQL로 내보내기 (0) | 2020.12.19 |
---|---|
MySQL 타임 스탬프를 mm / dd / yyyy로 형식 지정 (0) | 2020.12.18 |
MySQL Mac 터미널에서 SQL 파일 실행 (0) | 2020.12.18 |
MySQL MySql에서 트리거를 만드는 동안 변수 선언 (0) | 2020.12.18 |
MySQL mysql 쿼리의 정의되지 않은 인덱스 오류 (0) | 2020.12.18 |
댓글