为什么pyqt连不上sqlsever
答案:1 悬赏:50 手机版
解决时间 2021-02-20 09:35
- 提问者网友:趣果有间
- 2021-02-19 20:19
为什么pyqt连不上sqlsever
最佳答案
- 五星知识达人网友:低音帝王
- 2021-02-19 21:20
pyqt4连接mysql数据库的方法:
原料:sip-4.17.tar.gz、PyQt-gpl-5.5.1.tar.gz安装包
下载后解压缩到用户目录。
键入以下命令:
python configure.py (或python)
make&sudo make install
1、安装mysql的sqldrivers
默认情况下qt只有SQLite驱动,其它驱动要自己安装:
sudo apt-get install libqt4-sql-mysql libqt5sql5-mysql
sudo apt-get install libqt4-sql-psql libqt5sql5-psql
2、对于安装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运行异常
3、测试代码
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_())
测试完成,连接成功。
原料:sip-4.17.tar.gz、PyQt-gpl-5.5.1.tar.gz安装包
下载后解压缩到用户目录。
键入以下命令:
python configure.py (或python)
make&sudo make install
1、安装mysql的sqldrivers
默认情况下qt只有SQLite驱动,其它驱动要自己安装:
sudo apt-get install libqt4-sql-mysql libqt5sql5-mysql
sudo apt-get install libqt4-sql-psql libqt5sql5-psql
2、对于安装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运行异常
3、测试代码
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_())
测试完成,连接成功。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯