static PySide.QtSql.QSqlDatabase.addDatabase(driver[,connectionName=QLatin1String(defaultConnection)])
参数: |
|
返回类型: |
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(other, connectionName)
参数: |
|
参数类型: |
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]])
参数: |
|
返回类型: |
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)
参数: |
|
返回类型: |
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)
参数: |
|
这个函数注册一个新的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() 返回连接的用户名,它可能是空的