PyQt 4(PyQt 5)mysqlまたはPostgresへのアクセス
2852 ワード
一、qt 4,qt 5をインストールする
二、sip及びPyQtのインストール(ソースコードのコンパイルインストールを提案する)
sip-4.17をダウンロードする.tar.gz、PyQt-gpl-5.5.1.tar.gz
減圧後
python configure.py(またはpython)
make&sudo make install
三、mysqlのsqldriversをインストールする
デフォルトではqtはSQLiteドライバのみで、他のドライバは自分でインストールします.
sudo apt-get install libqt4-sql-mysql libqt5sql5-mysql
sudo apt-get install libqt4-sql-psql libqt5sql5-psql
四、MATLABをインストールするシステムに対して動的リンクライブラリバージョンの問題が発生する可能性がある
import QtPyモジュールの場合エラー
>>> from PyQt4.QtQtSql import *
Traceback (most recent call last):
File "", line 1, in
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運転異常は認められなかった
五、テストコード
mysql
Postgres
ただ
QMYSQLをQSQLに変更(もちろんデータベースの接続情報は必ず変更します)
二、sip及びPyQtのインストール(ソースコードのコンパイルインストールを提案する)
sip-4.17をダウンロードする.tar.gz、PyQt-gpl-5.5.1.tar.gz
減圧後
python configure.py(またはpython)
make&sudo make install
三、mysqlのsqldriversをインストールする
デフォルトではqtはSQLiteドライバのみで、他のドライバは自分でインストールします.
sudo apt-get install libqt4-sql-mysql libqt5sql5-mysql
sudo apt-get install libqt4-sql-psql libqt5sql5-psql
四、MATLABをインストールするシステムに対して動的リンクライブラリバージョンの問題が発生する可能性がある
import QtPyモジュールの場合エラー
>>> from PyQt4.QtQtSql import *
Traceback (most recent call last):
File "
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運転異常は認められなかった
五、テストコード
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をQSQLに変更(もちろんデータベースの接続情報は必ず変更します)