上一章解决了无法加载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.
注意!
要打开的数据库必须已经存在于磁盘或服务器上。
唯一的例外是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():返回所有可用数据库驱动程序的列表。
查询表中的信息
- 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实例 获取字段的特定信息
- 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 获取索引的有关信息
- name():索引名称
- isDescending(int i): 如果字段i索引按降序排序,则返回true; 否则返回false。
2.4 读取数据库操作错误的信息
- type():返回错误信息类型的枚举类型(QSqlError.ErrorType),
- NoError:没有错误
- ConnectionError:连接错误
- StatementError:SQL语言错误
- TransactionError:事务错误
- UnknownError:未知错误
- text():返回databaseText() 返回值和 driverText() 返回值的连接字符串。
- databaseText():返回数据库出错信息。
- driverText():返回驱动出错信息。
- nativeErrorCode():返回数据库的原始错误代码。
pyqt5-----postgresql数据库使用的更多相关文章
-
ASP.NET MVC 使用 Petapoco 微型ORM框架+NpgSql驱动连接 PostgreSQL数据库
前段时间在园子里看到了小蝶惊鸿 发布的有关绿色版的Linux.NET——“Jws.Mono”.由于我对.Net程序跑在Linux上非常感兴趣,自己也看了一些有关mono的资料,但是一直没有时间抽出时间 ...
-
PostgreSQL介绍以及如何开发框架中使用PostgreSQL数据库
最近准备下PostgreSQL数据库开发的相关知识,本文把总结的PPT内容通过博客记录分享,本随笔的主要内容是介绍PostgreSQL数据库的基础信息,以及如何在我们的开发框架中使用PostgreSQ ...
-
TPC-H生成.tbl文件导入postgresql数据库的坑
数据库project好好的不用主流的MySQL和Microsoft server而要求用听都没听过的postgresql (当然,可能你三个都没听过) 这里的坑主要是把生成的那八张.tbl的表导入pg ...
-
PowerDesigner反向工程PostgreSQL数据库
1. 环境准备: a) 安装PowerDesigner,以PowerDesigner15.1为例 b) 安装java jdk,以jdk-7-windows-i586为例 ...
-
视频教程--ASP.NET MVC 使用 Petapoco 微型ORM框架+NpgSql驱动连接 PostgreSQL数据库
说好的给园子里的朋友们录制与<ASP.NET MVC 使用 Petapoco 微型ORM框架+NpgSql驱动连接 PostgreSQL数据库> 这篇博客相对应的视频,由于一个月一来没有时 ...
-
Enterprise Architect的共享Respository设置,postgresql数据库
Enterprise Architect有一个很实用的共享,在设计UML图的时候,可以连接到一个数据库服务器,将所有的画图数据共享在上面,所有连到这个server的人,都可以看到 别人的图,图中的元素 ...
-
PostgreSQL数据库基本配置
一.安装 首先安装PostgreSQL客户端: sudo apt-get install postgresql-client 然后,安装PostgreSQL服务器: sudo apt-get inst ...
-
C#访问PostGreSQL数据库的方法 http://www.jb51.net/article/35643.htm
这次的项目中的一个环节要求我把PostGreSQL数据取出来,然后放到SqlServer里,再去处理分析. http://www.jb51.net/article/35643.htm - 我对Post ...
-
C#访问postgresql数据库
最近开始做C#的DotNet的工作,因为对PostgreSQL数据库比较有兴趣,所以自己研究了一下如何访问PostgreSQL的 数据库的问题. 1.为了访问PostgreSQL数据库,需要从pgfo ...
-
openerp安装记录及postgresql数据库问题解决
ubuntu-14.04下openerp安装记录1.安装PostgreSQL 数据库 a.安装 sudo apt-get install postgresql 安装后ubu ...
随机推荐
-
Jenkins创建Maven项目及SSH部署
前面我们已经安装了Jenkins的环境,以及配置好了jdk和maven.下面我们来看如何通过Jenkins将svn的项目进行打包和部署. 创建MAVEN项目 1.点击新建,输入项目名,选择" ...
-
DNS域名解析过程
图1-10是DNS域名解析的主要请求过程实例图. 如图1-10所示,当一个用户在浏览器中输入www.abc.com时,DNS解析将会有将近10个步骤,这个过程大体描述如下.当用户在浏览器中输入域名并按 ...
-
stack 栈的实现
今天晚上去「南哪」听了场AI的讲座,除了话筒真心不给力之外,算是对微软这方面的进展有了更多了解,毕竟是半宣传性质的活动吧. 光听这些是没用的,眼下还是打好基础,多尝试学点新技术,拓宽能力和视野比较重要 ...
-
Oracle绑定变量
select * from table where id = ? 类似于上面这样的sql,如果不用绑定变量,每次执行时Oracle会认为是不同的sql,会在每次执行时生成一遍执行计划,而执行计划的生成 ...
-
Linux上svn服务器的搭建
安装svn服务器 直接用yum安装,命令如下: #yum install -y subversion 验证是否安装成功. #svnserve --version 创建SVN版本库 在home目录下创建 ...
-
Netty4 学习笔记之三:粘包和拆包
前言 在上一篇Netty 心跳 demo 中,了解了Netty中的客户端和服务端之间的心跳.这篇就来讲讲Netty中的粘包和拆包以及相应的处理. 名词解释 粘包: 会将消息粘粘起来发送.类似吃米饭,一 ...
-
pat1011-1020
一开始几道题写到吐血,真的自己现在好弱 1011 水题不说了 #include<bits/stdc++.h> using namespace std; const int N = 105; ...
-
python基础之小数据池,is和==区别 编码问题
主要内容 小数据池,is和==区别 编码问题 小数据池 一种缓存机制,也称为驻留机制,是为了能更快提高一些字符串和整数的处理速度is 和 == 的区别 == 主要指对变量值是否相等的判断,只要数值相同 ...
-
Leetcode 1020. 将数组分成和相等的三个部分
1020. 将数组分成和相等的三个部分 显示英文描述 我的提交返回竞赛 用户通过次数321 用户尝试次数401 通过次数324 提交次数883 题目难度Easy 给定一个整数数组 A,只有我们可 ...
-
CentOS 无法通过 yum 安装新版 nodejs 解决办法(安装的还是老版的)
官网安装说明:CentOS 安装 nodejs 第一步: curl --silent --location https://rpm.nodesource.com/setup_10.x | sudo b ...