永发信息网

为什么pyqt连不上sqlsever

答案:1  悬赏:50  手机版
解决时间 2021-02-20 09:35
为什么pyqt连不上sqlsever
最佳答案
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_())

测试完成,连接成功。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
渝北区糖酒公司洛碛经营部地址在哪,我要去那
煤气罐与灶具的水平净距离什么意思
游览黄山 作文300字
车牌照带字母的,是哪一年开始有带字母牌照的
中国移动申杰通讯指定专营店地址在什么地方,
12英寸书包能放得下一张a4纸么
信惠主食快餐店地址在什么地方,想过去办事
西部证券手机版软件如何下载?手机炒股具体要
已知A(k,12),B(4,5),C(10,k)且A,B,C三
正宗北京烤鸭学府街坞城中路店这个地址在什么
求一个动漫的名字,好像说的是一个少女因为家
胡萝卜可以和干百合一起熬粥吗
认为个人是在相当长的时间内计划他的消费和储
为什么每天晚上睡觉耳朵总是发热
金汇建材批发我想知道这个在什么地方
推荐资讯
尧都区魏村农村信用合作社24小时自助银行(圣
做领导如何立威信
悦翔v7轮胎能用17寸的吗
九阴真经适合少林的名字
经常吃烤鱿鱼对身体有什么好处?
南京市区附近那有可以钓鱼的地方
鄱阳县团林卫生院这个地址在什么地方,我要处
iphone充电没闪电标志,能充上电 只是充的很
待我长发及腰,尔来寻吾可好? 观遍人间君子
我女朋友是个多愁善感的女人,经常写些让我摸
荣成市国税局石岛湾旅游渡假区税务分局地址有
妖精的尾巴哪一集,初代梅比斯和六代马卡洛夫
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?