Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1504170
  • 博文数量: 164
  • 博客积分: 2993
  • 博客等级: 少校
  • 技术积分: 1718
  • 用 户 组: 普通用户
  • 注册时间: 2011-06-24 11:42
文章分类

全部博文(164)

文章存档

2014年(1)

2013年(36)

2012年(90)

2011年(37)

分类: Python/Ruby

2011-10-09 16:53:56

SQLite,是一款轻型的数据库,是遵守ACID的关联式,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。下面简单介绍下pyqt连接sqlite数据库的方法:
 
  1. #-*- coding: utf-8 -*-
  2. from PyQt4.QtGui import *
  3. from PyQt4.QtCore import *
  4. from PyQt4.QtSql import *
  5. import sys
  6. #创建数据库连接
  7. def createConnection():
  8.     #选择数据库类型,这里为sqlite3数据库
  9.     db=QSqlDatabase.addDatabase("QSQLITE")
  10.     #创建数据库test0.db,如果存在则打开,否则创建该数据库
  11.     db.setDatabaseName("test0.db")
  12.     #打开数据库
  13.     db.open()

  14. #创建表
  15. def createTable():
  16.     #创建QsqlQuery对象,用于执行sql语句
  17.     q=QSqlQuery()
  18.     q.exec_("create table if not exists t1 (f1 integer primary key,f2 varchar(20))")
  19.     q.exec_("delete from t1")
  20.     #这里使用 u 将字符串转换成unicode编码,解决中文乱码
  21.     q.exec_(u"insert into t1 values(1,'我')")
  22.     q.exec_(u"insert into t1 values(2,'我')")
  23.     q.exec_("commit")

  24. class Model(QSqlTableModel):
  25.     def __init__(self,parent):
  26.         QSqlTableModel.__init__(self,parent)
  27.         #设置要载入的表名
  28.         self.setTable("t1")
  29.         #这一步应该是执行查询的操作,不太理解
  30.         self.select()
  31.         #数据更新的策略,详细可以查看Qt文档
  32.         self.setEditStrategy(QSqlTableModel.OnManualSubmit)

  33. class TestWidget(QWidget):
  34.     def __init__(self):
  35.         QWidget.__init__(self)
  36.         vbox=QVBoxLayout(self)
  37.         self.view=QTableView()
  38.         self.model=Model(self.view)
  39.         self.view.setModel(self.model)
  40.         vbox.addWidget(self.view)

  41. if __name__=="__main__":
  42.     a=QApplication(sys.argv)
  43.     createConnection()
  44.     createTable()
  45.     w=TestWidget()
  46.     w.show()
  47.     sys.exit(a.exec_())
阅读(5507) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

gistmap2015-04-03 17:07:17

您的数据是自己插入的,并在之前就已经u化。
想请问一下博主,如果我的数据已自己在数据库中添加好,怎么放进table里不乱码呢?