PySide数据库类学习QSqlDatabase(二)

 

static PySide.QtSql.QSqlDatabase.addDatabase(driver[,connectionName=QLatin1String(defaultConnection)])

参数:

  • driver  PySide.QtSql.QSqlDriver
  • connectionName – unicode

返回类型:

PySide.QtSql.QSqlDatabase

 例:带驱动参数的连接

#include "qtdir/src/sql/drivers/psql/qsql_psql.cpp"

con = PQconnectdb("host=server user=bart password=simpson dbname=springfield")

drv = QPSQLDriver(con)

db = QSqlDatabase.addDatabase(drv) #变成新的默认连接

query = QSqlQuery()

query.exec_("SELECT NAME, ID FROM STAFF")

static PySide.QtSql.QSqlDatabase.cloneDatabase(otherconnectionName)

参数:

  • other  PySide.QtSql.QSqlDatabase
  • connectionName – unicode

参数类型:

PySide.QtSql.QSqlDatabase

克隆其它数据库连接建立新连接,并为这个克隆的新连接起名。这个连接具有母连接相同的配置如设置的服务器主机名,用户名,密码等等。当使用这个连接时必须调用open()方法找开连接。

PySide.QtSql.QSqlDatabase.close()

关闭数据库连接。拒绝PySide.QtSql.QSqlQuery对象的所有请求。

这也将影响本PySide.QtSql.QSqlDatabase对象副本

PySide.QtSql.QSqlDatabase.commit() 提交事务,成功返回true失败返回false,对有些数据库会发生错误,因为必须在创建查询之前开始事务

PySide.QtSql.QSqlDatabase.connectOptions() 返回连接选项,返回值是unicode字符串

PySide.QtSql.QSqlDatabase.connectionName()返回连接名

static PySide.QtSql.QSqlDatabase.connectionNames()返回一个列表list,包含所有连接的名称

static PySide.QtSql.QSqlDatabase.contains([connectionName=QLatin1String(defaultConnection)])

参数:

connectionName – unicode

返回类型:

PySide.QtCore.bool

检测连接名是否存在

static PySide.QtSql.QSqlDatabase.database([connectionName=QLatin1String(defaultConnection)[,open=true]])

参数:

  • connectionName – unicode
  • open  PySide.QtCore.bool

返回类型:

PySide.QtSql.QSqlDatabase

返回指定数据库连接名的连接(此文中我常把QSqlDatabase称作一种连接呵)。这个连接是以前通adddatabase()创建的,可以指定可选参数决定是否打开此连接。缺省情况下打开数据库。

连接名缺省,将使用系统默认连接名。如果连接名不存在返回无效连接。

可用isOpen()检测。

PySide.QtSql.QSqlDatabase.databaseName()返回数据库名

PySide.QtSql.QSqlDatabase.driver() 返回驱动PySide.QtSql.QSqlDriver

PySide.QtSql.QSqlDatabase.driverName() 返回驱动名

static PySide.QtSql.QSqlDatabase.drivers() 返回可用驱动列表(list类型)

PySide.QtSql.QSqlDatabase.exec_([query=""])

参数:

query – unicode

返回类型:

PySide.QtSql.QSqlQuery

执行数据库SQL语句返回Executes  PySide.QtSql.QSqlQuery对象。PySide.QtSql.QSqlDatabase.lastError()可检测错误信息,如果查询是空的或无效查询,则lastError()不受影响。

PySide.QtSql.QSqlDatabase.hostName()返回连接的主机名;它可能是空的。

static PySide.QtSql.QSqlDatabase.isDriverAvailable(name) 检测驱动是否存在

PySide.QtSql.QSqlDatabase.isOpen() 检测数据库是否打开

PySide.QtSql.QSqlDatabase.isOpenError() 检测数据库是否打开错误。

PySide.QtSql.QSqlDatabase.isValid() 如果 PySide.QtSql.QSqlDatabase是有效的返加true

:

db = QSqlDatabase()

print(db.isValid())         # Returns False

db = QSqlDatabase.database("sales")

print(db.isValid())         # Returns True if "sales" connection exists

QSqlDatabase.removeDatabase("sales")

print(db.isValid())         # Returns False

PySide.QtSql.QSqlDatabase.lastError()返回数据库操作失败的最后一个错误信息。

PySide.QtSql.QSqlDatabase.numericalPrecisionPolicy()返回数据库的数值精度

返回类型:

PySide.QtSql.QSql.NumericalPrecisionPolicy

PySide.QtSql.QSqlDatabase.open(user, password)

参数:

  • user – unicode
  • password – unicode

返回类型:

PySide.QtCore.bool

使用给定的用户名和密码打开数据库连接。成功返回true;否则返回false

错误信息可以检索使用lasterror()

这个函数不储存密码。相反,密码直接传递到驱动程序打开连接,然后丢弃。

PySide.QtSql.QSqlDatabase.open() 打开当前数据库。成功返回true;否则返回false

PySide.QtSql.QSqlDatabase.password() 返加数据库密码

PySide.QtSql.QSqlDatabase.port()返回连接的端口号

PySide.QtSql.QSqlDatabase.primaryIndex(tablename) 返回分区表的主索引

参数:

tablename – unicode

返回类型:

PySide.QtSql.QSqlIndex

PySide.QtSql.QSqlDatabase.record(tablename)返回记录。

static PySide.QtSql.QSqlDatabase.registerSqlDriver(name, creator)

参数:

  • name – unicode
  • creator  PySide.QtSql.QSqlDriverCreatorBase

这个函数注册一个新的SQL驱动器。

:

class MyDatabaseDriverCreatorBase(QtSql.QSqlDriverCreatorBase):

    ...

    def createObject(self):

        return MyDatabaseDriver()

mydriver = MyDatabaseDriverCreatorBase()

QtSql.QSqlDatabase.registerSqlDriver("MYDRIVER", mydriver)

db = QtSql.QSqlDatabase.addDatabase("MYDRIVER")

参见PySide.QtSql.QSqlDatabase.drivers()

static PySide.QtSql.QSqlDatabase.removeDatabase(connectionName)

从数据库连接表中删除连接

警告 请不要在打开连接时调用该函数,否则会发生资源泄漏

:

#以下是错误的

db = QSqlDatabase.database("sales")

query = QSqlQuery("SELECT NAME, DOB FROM EMPLOYEES", db)

QSqlDatabase.removeDatabase("sales")

PySide.QtSql.QSqlDatabase.rollback() 回滚事务 成功返回true;否则返回false

PySide.QtSql.QSqlDatabase.setConnectOptions([options=""])

参数:

options – unicode

设置数据库选项 .连接必须是打开的,才能调用该函数。空参数是清除选项。

选项格式为:”[option=value]; [option=value],….”  

:

...

# MySQL connection

db.setConnectOptions("CLIENT_SSL=1;CLIENT_IGNORE_SPACE=1") # use an SSL connection to the server

if not db.open():

    db.setConnectOptions() # clears the connect option string

    ...

...

# PostgreSQL connection

db.setConnectOptions("requiressl=1")    # enable PostgreSQL SSL connections

if not db.open():

    db.setConnectOptions() # clear options

    ...

...

# ODBC connection

# set ODBC options

db.setConnectOptions("SQL_ATTR_ACCESS_MODE=SQL_MODE_READ_ONLY;SQL_ATTR_TRACE=SQL_OPT_TRACE_ON")

if not db.open():

    db.setConnectOptions()              # don't try to set this option

    ...

可参看PySide.QtSql.QSqlDatabase.connectOptions()

PySide.QtSql.QSqlDatabase.setDatabaseName(name)设置数据库

对于 QOCI (Oracle) 驱动, 数据库名为 TNS服务名.

对于QODBC驱动,是连接字符串

例:

db = QSqlDatabase.addDatabase("QODBC")

db.setDatabaseName("DRIVER={Microsoft Access Driver (*.mdb)};FIL={MS Access};DBQ=myaccessfile.mdb")

if db.open():

    # success!

    pass

...

PySide.QtSql.QSqlDatabase.setHostName(host)设置服务器主机名

PySide.QtSql.QSqlDatabase.setNumericalPrecisionPolicy(precisionPolicy)

参数:

precisionPolicy  PySide.QtSql.QSql.NumericalPrecisionPolicy

PySide.QtSql.QSqlDatabase.setPassword(password)设置密码

PySide.QtSql.QSqlDatabase.setPort(p) 设置服务器端口

参数:

p  PySide.QtCore.int

PySide.QtSql.QSqlDatabase.setUserName(name)设置用户名

PySide.QtSql.QSqlDatabase.tables([type=QSql.Tables])返回表名列表,返回值为list

参数:

type  PySide.QtSql.QSql.TableType

返回类型:

list of strings

PySide.QtSql.QSqlDatabase.transaction() 开始事务,返回值为true说明成功,false不成功

PySide.QtSql.QSqlDatabase.userName() 返回连接的用户名,它可能是空的

你可能感兴趣的:(GUI,python,PySide,QSqlDatabase,QSql)