중화사전망 - 서예자전 - Python mysqldb 제출 질문을 합니다.
Python mysqldb 제출 질문을 합니다.
이 데이터베이스 인터페이스를 사용하는 것은 주로 연결-> 데이터베이스입니다. 질의 실행->; 데이터 추출->; 연결 단계를 닫습니다. MySQLdb 는 연결, 커서 및 결과와 같은 주요 객체를 제공합니다. 구체적인 사용 절차는 매우 간단하다. 먼저 쓰지 마세요. 내가 더 중요하고 주목할 만한 곳을 써라.
1. mysqldb 에서는 이러한 매개 변수만 자주 사용하지만. Connect (host, user, passw, db) 함수에는 문자 세트, 스레드 안전, SSL 등과 같은 중요한 매개 변수가 많이 들어 있습니다. 사용할 때 신분에 주의하세요.
2. Connection.query () 함수를 사용하여 쿼리한 후 Connection 객체는 store_result 와 use_result 의 두 가지 결과를 반환할 수 있습니다. Store_result 는 결과 세트를 클라이언트에 다시 저장하고, use_result 는 결과 세트를 서버측에 저장하고, 연결을 유지 관리하며, 서버 리소스를 사용합니다. 이 시점에서 다른 조회를 수행할 수 없습니다. 반환된 결과 세트가 너무 크거나 limit 를 사용할 수 없는 경우가 아니면 Store_result 를 사용하는 것이 좋습니다.
데이터를 가져오는 데는 세 가지 반환 형식이 있습니다. 튜플로 (how = 0); 사전으로서 key=column 또는 table.column 이 중복된 경우 (how =1); 사전으로서 key=table.column (how=2)
4. 추출할 때마다 데이터 위치가 결과 내에서 이동합니다. 즉, /fetch-0/0 행의 데이터가 있는 경우 result.fetch _ row (3,0) 를 실행하면 처음 세 줄이 나타난 다음 result.fetch _ row () 가 실행됩니다 Use_result 를 사용하는 경우, 즉 데이터가 서버에 저장되어 있는 경우 fetch 의 모든 항목 앞에 쿼리 작업을 수행할 수 없다는 점도 주목할 만하다.
5.mysql 자체는 커서를 지원하지 않지만 MySQLdb 는 커서를 시뮬레이트합니다. 쿼리를 수행하는 중요한 방법은 execute 와 executemany 입니다. Execute 메서드, SQL 문 실행, executemany 메서드 호출, 매우 유용합니다. 데이터베이스 성능의 병목 현상의 상당 부분은 네트워크 IO 와 디스크 IO 가 여러 개의 insert 를 한데 모아 IO 를 한 번만 수행하면 데이터베이스 성능을 향상시킬 수 있다는 것입니다. 커서에서 데이터를 추출하는 방법에는 fetchone, fetchmany, fetchall 의 세 가지가 있습니다. 각 방법으로 인해 커서가 이동하므로 커서의 위치에 주의해야 합니다. 커서의 scroll(value, mode) 메서드는 커서를 스크롤하고 mode 매개변수는 현재 위치를 기준으로 이동할지 절대 위치를 기준으로 이동할지 지정합니다.
6.MySQLdb 는 공식 가이드에 완전히 나열되지 않은 많은 함수와 방법을 제공합니다. 사용자들은 도움을 받아 볼 수 있는데, 이것은 많은 편리한 물건들을 제공한다.
7. MySQL 의 경우 트랜잭션을 지원하는 스토리지 엔진을 사용하면 각 작업 후 커밋이 필요합니다. 그렇지 않으면 데이터베이스에 기록되지 않고 적절한 롤백이 가능하지만 커밋 후에는 롤백이 불가능합니다. 많은 SQL 명령을 실행한 후 Commit () 를 다시 호출하여 성능을 적절히 향상시킬 수 있습니다.
8.executemany 가 너무 많은 명령을 처리하는 것은 좋지 않을 수 있습니다. 데이터가 함께 서버로 전송될 때 서버측 버퍼 오버플로가 발생할 수 있고, 한 번에 데이터 양이 너무 많으면 예상치 못한 문제가 발생할 수 있기 때문입니다. 일리가 있다, 일괄 집행은 좋은 생각이다.
마지막으로, 저는 주로 MySQLdb 가 제공하는 일반적인 방법을 간단히 다시 패키지화하는 pyMysql 모듈을 직접 썼습니다. 또한 이 기회를 통해 MySQLdb 를 배우고 python 코딩을 연습합니다. 이 프로그램은 myisam 엔진을 사용하는 데이터베이스 테이블을 사용하므로 대신 commit () 를 추가하는 것이 좋습니다.