Python+PyQt 数据库基本操作

Sqlite:

使用Python的sqlite3:

需要注意下commit方式与qt稍有不同

import sqlite3

class DBManager():
    def __init__(self):
        self.db = sqlite3.connect("core.db")
        self.query = self.db.cursor()  
        ...
        self._initTable()
        ...

    ## Create table["webpower"] if not exists
    def _initTable(self):
        self.query.execute("create table if not exists webpower (id integer primary key,name TEXT,state integer)")
        self.db.commit()

    ...

 

使用QtSql:

 1 from PyQt4.QtSql import QSqlQuery,QSqlDatabase
 2 
 3 class DBManager():
 4     def __init__(self):
 5         self.db = QSqlDatabase.addDatabase("QSQLITE") #select database type
 6         self.db.setDatabaseName("core.db") # set database name
 7         self.db.open()  #connect to or create database  
 8         self.query = QSqlQuery() #sql handler
 9         ...    
10     
11     ...

 

Mysql:

from PyQt4.QtSql import QSqlQuery,QSqlDatabase

class DBManager():
    def __init__(self):
        self.db = QSqlDatabase.addDatabase("QMYSQL")  #select database type
        self.db.setHostName("localhost")  #set address
        self.db.setUserName("root"); #set user name
        self.db.setPassword("root"); #set user pwd
        self._trytoConnect() #check connection
        self.query = QSqlQuery()

        ## create database
        self.query.exec_("CREATE DATABASE test1")

        ## Choose database
        self.db.setDatabaseName("test1")
        self._trytoConnect()
        #also can be :self.query.exec_("USE test1")

    ## Connect and check connection state
    def _trytoConnect(self):
        if (self.db.open()):     
            print "Success"
        else:
            print "Failed to connect to mysql"

    ...

 

常用SQL:

--create table
create table if not exists test2 (id integer primary key,time real,powers real);

--clear table
delete from test2;

--insert
insert into t1 values(1,0.1,0.2);

--select
select * from test1

--delete table
drop table test4

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。