2011-04-12 3 views
1

많은 연구와 조사 끝에 필자는 Eric5를 편집기로 사용하여 pyQT4로 파이썬 개발을하기로 결정했습니다. 그러나, 나는 MySQL을 작동 시키려고 벽돌 벽에 뛰어 들었다. QMySQL 드라이버에 문제가있는 것 같습니다. 지금까지 살펴본 토론에서 유일한 수정은 pyQT SDK를 설치 한 다음 MySQL 드라이버를 다시 컴파일하는 것입니다. 내가 정말로 겪어야하는 고통스러운 과정. 나는 실제로 MS SQL을 사용하는 것을 선호 할 것이지만 나는 MSSQL 지원으로 pyQT를위한 어떤 드라이버도 찾지 못한다.pyQT와 MySQL 또는 MSSQL Connectivity

그럼, 내 질문은 : 어느 것이 mySQL 또는 MSSQL, 실제로 작동 pyQT를 사용하는 가장 좋은 방법은 무엇입니까?

답변을 기다리는 동안 SQLAlchemy 및 mySQL.Connector를 사용하여 pyQT와 공존하는지 여부를 알아볼 수 있습니다.

답변

2

MS SQL을 사용하고 싶다면 PyQt에서 QSqlDatabase와 ODBC 드라이버를 사용하는 것이 매우 쉽습니다.

다음은 MS SQL을 사용하는 프로젝트에서 발췌 한 것입니다.

db = QSqlDatabase.addDatabase('QODBC') 
#TODO: Add support for trusted connections. 
#("Driver={SQLServer};Server=Your_Server_Name;Database=Your_Database_Name;Trusted_Connection=yes;") 
db.setDatabaseName('DRIVER={SQL Server};SERVER=%s;DATABASE=%s;UID=%s;PWD=%s;' 
         % (hostname, 
          databasename, 
          username, 
          password)) 
db.open() 

분명히 호스트 이름, databasename, 사용자 이름 및 암호 변수를 설정해야합니다. 주석 처리 된 행은 신뢰할 수있는 연결에 대한 연결 문자열을 표시합니다. 실제로 시도해 볼 필요가있는 것은 아니지만 필요한 경우 작동해야합니다.

일단 데이터베이스를 열면 MySQL과 PyQt 드라이버를 함께 사용하는 것처럼 QSqlQuery를 사용할 수 있습니다.

+0

팁과 샘플 코드를 보내 주셔서 감사합니다. 나의 문제는 내 설치와 관련이있다. 나는 운전자의 수동 빌드를해야한다는 것에 대해 인터넷에 다른 사람들의 게시물을 보았던 실수를 저지른 다음, 그것이 나의 동일한 문제라고 가정했다. 내가 테스트 한 모든 Python 도구를 제거하여이 문제를 해결했습니다. 나는 Python 3.2, PyQt 3.2, Eric5를 새로 설치했다. MySQL 연결을 테스트하기위한 샘플은 이제 정상적으로 작동합니다. – Tim

+0

@Tim 다음과 같이 시도했지만 성공하지 못한 MySQL.i에 연결하기 위해 사용한 설정을 게시 할 수 있습니까? db = QtSql.QSqlDatabase.addDatabase ("QODBC")''db.setDatabaseName ('DRIVER = {MySQL % (호스트 이름, 데이터베이스 이름, 사용자 이름, 암호))''% s ' – Rao

1

예, 나는 똑같이 작동합니다. SQL API가 Qt의 QtSql 모듈의 원시 SQL 버전과 비교하여 제공하는 것과 같은 프로그래밍 API를 좋아합니다. 괜찮아요, 괜찮아요, 당신은 sqlalchemy 쿼리에서 데이터로 서브 클래 싱 QAbstractTableModel을 채 웁니다. 다른 파이썬 객체의 데이터와 비슷합니다. 이것은 캐싱 및 데이터베이스 쿼리를 처리하고 QtSqlTableModel의 niceness를 잃는 것을 의미합니다. 그러나 그렇게 나쁘지 않아야합니다.

+0

그런 식으로 작동했지만 다른 문제가 있음이 밝혀졌습니다. 신선한 설치가 나를 위해 그것을 돌 보았다. – Tim

0

QT에서 GUI를 제공하는 경우에도 데이터베이스 연결에 대해 pyodbc을 고려할 수 있습니다. Pyodbc는 MySQL과 MS SQL Server와 호환됩니다.

관련 문제