2011-04-12 4 views
1

Après beaucoup d'études et de recherches, j'ai décidé de faire mon développement Python avec pyQT4 en utilisant Eric5 comme éditeur. Cependant, j'ai couru dans un mur de briques avec essayer de faire fonctionner MySQL. Il semble qu'il y ait un problème avec le pilote QMySQL. D'après les discussions que j'ai vues jusqu'ici, la seule solution est d'installer le SDK pyQT, puis de recompiler le pilote MySQL. Un processus douloureux que je ne veux vraiment pas traverser. Je préférerais utiliser MS SQL, mais je ne trouve aucun pilote pour pyQT avec le support de MSSQL. Donc, ma question est: Quelle est la meilleure approche pour utiliser pyQT avec mySQL ou MSSQL, qui fonctionne réellement?pyQT et connectivité MySQL ou MSSQL

En attendant une réponse, je pourrais juste bricoler avec SQLAlchemy et mySQL.Connector pour voir s'il coexistera avec pyQT.

Répondre

2

Si vous préférez utiliser MS SQL, il est très facile d'utiliser PyQt avec QSqlDatabase et le pilote ODBC.

Voici un extrait d'un projet sur lequel je travaille et qui utilise 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() 

Évidemment, vous aurez besoin d'avoir déjà mis le nom d'hôte, databasename, les variables de nom d'utilisateur et mot de passe. La ligne commentée montre la chaîne de connexion pour Trusted Connections; Ce n'est pas quelque chose que j'ai vraiment besoin d'essayer, mais ça devrait marcher si c'est ce dont vous avez besoin.

Une fois la base de données ouverte, vous pouvez utiliser QSqlQuery comme vous le feriez si vous utilisez MySql avec le pilote PyQt.

+0

Merci pour le conseil et l'exemple de code. Il s'avère que mon problème était avec mon installation. J'ai fait l'erreur de voir d'autres personnes sur internet à propos d'avoir à faire une construction manuelle des pilotes, en supposant que c'était le même problème. Il s'avère que j'ai corrigé le problème en désinstallant tous les outils Python que je testais. J'ai fait une nouvelle installation de Python 3.2, PyQt 3.2 et Eric5. Les exemples pour tester la connexion MySQL fonctionnent bien maintenant. – Tim

+0

@Tim pouvez-vous publier les paramètres que vous avez utilisés pour vous connecter à MySQL.i essayé ci-dessous mais pas réussi ... 'db = QtSql.QSqlDatabase.addDatabase (" QODBC ")' 'db.setDatabaseName ('DRIVER = {MySQL Serveur}; SERVER =% s; DATABASE =% s; UID =% s; PWD =% s; ')% (nom d'hôte, nom de base de données, nom d'utilisateur, mot de passe)) ' – Rao

1

Oui ça va marcher, je fais la même chose. J'aime une API de programmation, comme ce que SQLAlchemy fournit sur la version Raw SQL du module QtSql de Qt. Cela fonctionne bien et bien, il suffit de remplir un QAbstractTableModel sous-classé avec les données de vos requêtes sqlalchemy, comme vous le feriez avec des données de n'importe quel autre objet python. Cela signifie cependant que vous gérez les requêtes de mise en cache et de base de données, perdant la gentillesse de QtSqlTableModel. Mais ne devrait pas être trop mauvais.

+0

Cela a fonctionné de cette façon mais il s'est avéré que j'avais d'autres problèmes. Une nouvelle installation en a pris soin pour moi. – Tim

0

Vous pouvez envisager pyodbc pour la connectivité de votre base de données, même si l'interface graphique est fournie par QT. Pyodbc est compatible avec MySQL et MS SQL Server.