1、安裝qt4,qt5python
2、安裝sip及PyQt(建議源碼編譯安裝)mysql
下載sip-4.17.tar.gz、PyQt-gpl-5.5.1.tar.gzlinux
減壓後sql
python configure.py (或python)數據庫
make&sudo make install測試
3、安裝mysql的sqldriversui
默認狀況下qt只有SQLite驅動,其它驅動要本身安裝:編碼
sudo apt-get install libqt4-sql-mysql libqt5sql5-mysqlspa
sudo apt-get install libqt4-sql-psql libqt5sql5-psqlcode
4、對於安裝MATLAB的系統可能出現動態連接庫版本問題
如import QtPy模塊時出錯
>>> from PyQt4.QtQtSql import *
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: /opt/local/MATLAB/R2012a/bin/glnxa64/QtSql.so.4: undefined symbol: _ZN31
locate QtSql.so
而後把連接改到系統庫下
/opt/local/MATLAB/R2012a/bin/glnxa64/libQtSql.so.4 -> /usr/lib/x86_64-linux-gnu/libQtSql.so.4.8.6
個人系統裏QtCore、QtGui、QtOpenGL、QtNetwork等都有問題、須要以上操做。修改後未發現MATLAB運行異常
5、測試代碼
mysql
#-*- coding: utf-8 -*- from PyQt4.QtGui import * from PyQt4.QtCore import * from PyQt4.QtSql import * import sys #建立數據庫鏈接 def createConnection(): #選擇數據庫類型,這裏爲mysql數據庫 db=QSqlDatabase.addDatabase("QMYSQL") db.setDatabaseName("you_db") db.setHostName("localhost") #set address db.setUserName("you_usr"); #set user name db.setPassword("you_passwd"); #set user pwd #打開數據庫 #打開數據庫 if (db.open()): print ("Success") else: print ("Failed to connect to mysql") #建立表 def createTable(): #建立QsqlQuery對象,用於執行sql語句 q=QSqlQuery() q.exec_("create table if not exists t1 (f1 integer primary key,f2 varchar(20))") q.exec_("delete from t1") #這裏使用 u 將字符串轉換成unicode編碼,解決中文亂碼 q.exec_(u"insert into t1 values(1,'我')") q.exec_(u"insert into t1 values(2,'我')") q.exec_("commit") class Model(QSqlTableModel): def __init__(self,parent): QSqlTableModel.__init__(self,parent) #設置要載入的表名 self.setTable("t1") #這一步應該是執行查詢的操做 self.select() #數據更新的策略,詳細能夠查看Qt文檔 self.setEditStrategy(QSqlTableModel.OnManualSubmit) class TestWidget(QWidget): def __init__(self): QWidget.__init__(self) vbox=QVBoxLayout(self) self.view=QTableView() self.model=Model(self.view) self.view.setModel(self.model) vbox.addWidget(self.view) if __name__=="__main__": a=QApplication(sys.argv) createConnection() createTable() w=TestWidget() w.show() sys.exit(a.exec_())
Postgres
只需把
db=QSqlDatabase.addDatabase("QMYSQL")
QMYSQL改成QPSQL(固然數據庫的鏈接信息確定要改過來)