上一章解决了无法加载postgresql数据库的问题

1.打开数据from PyQt5 import QtWidgets,QtSql,QtCoreimport sys

app =QtCore.QCoreApplication([])

dblists = QtSql.QSqlDatabase.drivers()
print(dblists) conn = QtSql.QSqlDatabase.addDatabase("QMYSQL")
conn.setHostName('localhost')
conn.setDatabaseName('db_blog')
conn.setUserName('root')
conn.setPassword('123456') isok = conn.open()
print(isok)
db = QtSql.QSqlDatabase.addDatabase("QPSQL")
db.setHostName("localhost")
db.setDatabaseName("map_info")
db.setUserName("postgres")
db.setPassword("123")
ok = db.open()
print(ok) 使用QtSql.QSQlDatabase.addDatabase()方法来添加数据库连接,并进行信息配置
以下为其对应的方法:

ddDatabase()方法返回一个QSqlDatabase类的实例,它表示建立连接的数据库。 QSqlDatabase方法有(详见http://doc.qt.io/qt-5/qsqldatabase.html):

  • setHostName(QString host):设置数据库的主机。
  • setPort(int port):设置连接数据库的主机商品。
  • setDatabaseName(QString name): 设置数据库名称、目录(sqlite数据库)或连接串(ODBC);
  • setUserName(QString name): 设置访问数据库的用户名;
  • setPassword(QString name): 设置访问数据库对应用户名的密码;
  • setConnectOptions(QString options = ''):该函数要在连接打开之前调用。对不同数据库可设的参数值请参考(http://pyqt.sourceforge.net/Docs/PyQt4/qsqldatabase.html#setConnectOptions)
  • open() 或open(QString user, QString password) :打开数据库,如果成功返回True,否则返回False.

注意!

    在创建到数据库的连接之前,应该创建一个应用程序对象(QApplication对象的一个实例)。 如果没有这样做,PyQt将无法下载指定数据库格式的驱动程序,也不会创建连接。
 
  要打开的数据库必须已经存在于磁盘或服务器上。
唯一的例外是SQLite数据库,如果打开时不存在,将动自动创建。
  • isOpen():如果数据库已打开,返回True;否则,返回False。
  • isOpenError(): 如果打开数据库连接时发生错误,返回True;
    否则返回False。 可以使用lastError()读取错误信息。
  • transaction(): 在数据库上开始一个事务。 如果操作成功,则返回true。
    否则,它返回false。
  • commits(): 如果驱动程序支持事务并且transaction()已经启动,则向数据库提交事务。
    如果操作成功,则返回true。 否则,返回false。
  • rollback():如果驱动程序支持事务并且transaction()已经启动,则向数据库提出取消事务。
    如果操作成功,则返回true。 否则,返回false。
  • lastError():返回QSqlError实例,为数据库时发生的最后一个错误的信息。
  • connectionName():返回数据库连接信息。
  • tables ([QSql.TableType type = QSql.Tables]):返回数据库表list.
    type参数可为:
    • QSql.Tables,0x01:所有用户表
    • QSql.SystemTables,0x02:内部表
    • QSql.Views,0x04:所表用户视图
    • QSql.AllTables,0xff:用户表、内部表和用户视图
  • record ( QString tablename):返回一个 QSqlRecord
    实例,包含表名为tablename的表结构。
  • primaryIndex(): 返回一个
    QSqlIndex 实例,包含表名为tablename的主索引。
  • close():关闭数据库连接。

除了addDatabase()静态方法外,QSqlDatabase类还有以下静态方法:

  • contains (QString connectionName = '']):如果数据库连接列表包含connectionName,则返回true; 否则返回false。

  • connectionNames(): 返回包含所有连接名称的列表。

  • database (QString connectionName = '', bool open = True):返回名为connectionName的数据库连接。 数据库连接必须是已经用addDatabase()添加的连接。 如果参数open为True(默认),并且数据库连接尚未打开,则调用此函数时会打开。 如果没有指定connectionName,则使用默认连接。 如果connectionName在数据库列表中不存在,则返回无效的连接。

  • cloneDatabase (QSqlDatabase other, QString connectionName):克隆other数据库连接,连接名为connectionName。

  • removeDatabase(QString connectionName):从数据库连接列表中删除connectionName数据库连接。

  • isDriverAvailable(QString name):name驱动存在,返回True;否则,返回False.

  • drivers():返回所有可用数据库驱动程序的列表。

查询表中的信息

   通过调用QSqlDatabase类的record()获取表结构的信息。 该函数返回一个QSqlRecord类实例。QSqlRecord类的方法有(详见http://doc.qt.io/qt-5/qsqlrecord.html):

  • count():返回表的字段数;
  • fieldName(int index):返回index索引处的字段名称。 如果该字段不存在,则返回一个空字符串;
  • field(int index ):返回index索引处的字段,即一个QSqlField实例;
  • field(QString name):返回字段名为name的字段,即一个QSqlField实例;
  • indexOf(QString name): 返回字段名为name的索引值。如果有不存在此字段,返回-1;
  • contains(QString name): 如果表中有name字段,返回True;否则返回False;
  • isEmpty(): 如果表中没有任何字段,返回True;否则返回False
table_stru = conn.record('t_blog')
print(table_stru.field('id'))查询表t_bolg,返回字段名为id的字段,即一个QSqlField实例 获取字段的特定信息
    通过QSqlRecord类的field()字段的信息。 该函数返回一个QSqlField类实例,方法有(详见http://doc.qt.io/qt-5/qsqlfield.html):
  • name():返回字段名称;
  • type():返回字段类型为QVariant类(详见http://doc.qt.io/qt-5/qvariantobsolete.htmI#Type-enum):
    • Invalid:非法类型
    • Bool:逻辑型
    • Char:字符型
    • Date:日期型
    • DateTime:日期时间型
    • Double:双精度型
    • Int和Long:整数型
    • String:字符串型
    • Time:时间型
    • UInt和ULongLong:无符号字符型
  • length(): 字段长度;
  • precision():字段精度
  • defaultValue():字段默认值
  • requiredStatus():返回字段是否必填。1:插入记录时必填;0:插入记录时,可选填;-1:无法确定是否必填。
  • isAutoValue():如果是字段值是自动生成,返回True;否则返回False;
  • isReadOnly():如果是只读字段,返回True;否则返回False;

2.3 获取索引的有关信息

    通过QSqiDatabase类的primaryIndex()返回一个QSqlIndex类实例,此类是QSqlRecord的子类,方法有(详见http://doc.qt.io/qt-5/qsqlindex.html):
  • name():索引名称
  • isDescending(int i): 如果字段i索引按降序排序,则返回true; 否则返回false。

2.4 读取数据库操作错误的信息

    PyQt5中用QSqlError类实例记录数据库操作过程中的错误信息。QSqlError类的方法有:
  • type():返回错误信息类型的枚举类型(QSqlError.ErrorType),
    • NoError:没有错误
    • ConnectionError:连接错误
    • StatementError:SQL语言错误
    • TransactionError:事务错误
    • UnknownError:未知错误
  • text():返回databaseText() 返回值和 driverText() 返回值的连接字符串。
  • databaseText():返回数据库出错信息。
  • driverText():返回驱动出错信息。
  • nativeErrorCode():返回数据库的原始错误代码。

pyqt5-----postgresql数据库使用的更多相关文章

  1. ASP.NET MVC 使用 Petapoco 微型ORM框架+NpgSql驱动连接 PostgreSQL数据库

    前段时间在园子里看到了小蝶惊鸿 发布的有关绿色版的Linux.NET——“Jws.Mono”.由于我对.Net程序跑在Linux上非常感兴趣,自己也看了一些有关mono的资料,但是一直没有时间抽出时间 ...

  2. PostgreSQL介绍以及如何开发框架中使用PostgreSQL数据库

    最近准备下PostgreSQL数据库开发的相关知识,本文把总结的PPT内容通过博客记录分享,本随笔的主要内容是介绍PostgreSQL数据库的基础信息,以及如何在我们的开发框架中使用PostgreSQ ...

  3. TPC-H生成.tbl文件导入postgresql数据库的坑

    数据库project好好的不用主流的MySQL和Microsoft server而要求用听都没听过的postgresql (当然,可能你三个都没听过) 这里的坑主要是把生成的那八张.tbl的表导入pg ...

  4. PowerDesigner反向工程PostgreSQL数据库

    1. 环境准备: a)         安装PowerDesigner,以PowerDesigner15.1为例 b)         安装java jdk,以jdk-7-windows-i586为例 ...

  5. 视频教程--ASP.NET MVC 使用 Petapoco 微型ORM框架+NpgSql驱动连接 PostgreSQL数据库

    说好的给园子里的朋友们录制与<ASP.NET MVC 使用 Petapoco 微型ORM框架+NpgSql驱动连接 PostgreSQL数据库> 这篇博客相对应的视频,由于一个月一来没有时 ...

  6. Enterprise Architect的共享Respository设置,postgresql数据库

    Enterprise Architect有一个很实用的共享,在设计UML图的时候,可以连接到一个数据库服务器,将所有的画图数据共享在上面,所有连到这个server的人,都可以看到 别人的图,图中的元素 ...

  7. PostgreSQL数据库基本配置

    一.安装 首先安装PostgreSQL客户端: sudo apt-get install postgresql-client 然后,安装PostgreSQL服务器: sudo apt-get inst ...

  8. C#访问PostGreSQL数据库的方法 http://www.jb51.net/article/35643.htm

    这次的项目中的一个环节要求我把PostGreSQL数据取出来,然后放到SqlServer里,再去处理分析. http://www.jb51.net/article/35643.htm - 我对Post ...

  9. C#访问postgresql数据库

    最近开始做C#的DotNet的工作,因为对PostgreSQL数据库比较有兴趣,所以自己研究了一下如何访问PostgreSQL的 数据库的问题. 1.为了访问PostgreSQL数据库,需要从pgfo ...

  10. openerp安装记录及postgresql数据库问题解决

    ubuntu-14.04下openerp安装记录1.安装PostgreSQL 数据库    a.安装         sudo apt-get install postgresql    安装后ubu ...

随机推荐

  1. VS 2017 + opencv4.0

    完全参考这一文章, 非常详细: https://blog.csdn.net/qq_41175905/article/details/80560429 记录自己遇到的问题: 1. VS 2017 专业版 ...

  2. IDEA中的version control问题

    项目已经添加了svn,但右键项目时找不到Svn选择.但在VCS中却有,很奇怪. 这个问题是svn的根路径与当前IDEA打开的项目路径不一致的原因. 在IdeaProjects下有两个项目,一个inju ...

  3. 用js简单实现一下迪克斯特拉算法

    今天看书看到了迪克斯特拉算法,大概用js实现一下呢,计算最短路径. 首先,迪克斯特拉算法只适用于有向无环图,且没有负权重,本例关系图如下哦,数字为权重,emmmm,画得稍微有点丑~ //大概用js实现 ...

  4. 深度系统 deepin 15.9 关闭桌面

    深度系统 deepin 15.9 关闭桌面 由于特别的原因,关闭深度的桌面. sudo systemctl disable lightdm 如果需要在命令模式进入桌面可以使用以下命令. sudo se ...

  5. dd/MMM/yyyy:hh:mm:ss +0800日期格式的转化

    private static void myHandler() throws ParseException { String dtime1 = "23/Apr/2019:04:08:00 + ...

  6. C# 重写Equals

    public class PerformanceRank { public int Rank { get; set; } public string Eid { get; set; } public ...

  7. [蓝桥杯]PREV-22.历届试题_国王的烦恼

    问题描述 C国由n个小岛组成,为了方便小岛之间联络,C国在小岛间建立了m座大桥,每座大桥连接两座小岛.两个小岛间可能存在多座桥连接.然而,由于海水冲刷,有一些大桥面临着不能使用的危险. 如果两个小岛间 ...

  8. 安装git-review

    参考 https://blog.csdn.net/qq18340811755/article/details/80965188 当yum install git-review安装失效,没有安装包时,只 ...

  9. 多任务fork、multiprocessing、进程池、进程间通信-Queue

    并发:一个处理器同时处理多个任务. 并行:多个处理器或者是多核的处理器同时处理多个不同的任务. fork创建子进程 import os import time #fork出一个子进程,子进程也从这一行 ...

  10. 7.6 chcount.c -- 使用逻辑与运算符

    include <stdio.h> #define PERIOD '.' int main(void) { char ch; int charcount = 0; while ((ch = ...