C#/Python/MATLAB操作PostgreSQL数据库
PostgreSQL数据库是一个功能非常强大的开源数据库,支持多种SQL特性,非常好用。此外由于结合PostGIS可以实现空间数据库功能,故非常适合GIS领域的使用。本文旨在介绍C#、Python、MATLAB对PostgreSQL进行操作的最基本方法,并实现远程数据库的连接。
1.C#连接PostgreSQL
C#连接PostgreSQL需要使用Npgsql,可以通过Visual Studio自带的nuget下载:
Install-Package Npgsql
之后在代码中进行引用即可。
以下是案例代码:
//连接数据库
NpgsqlConnection connection = new NpgsqlConnection("Server = 127.0.0.1; Port = 5432; UserId = postgres; Password = postgres;Database = db_name");
connection.Open(); //构造SQL语句
string sqlCommand = "SELECT * FROM table_name";
NpgsqlCommand command = new NpgsqlCommand(sqlCommand, connection); //读取数据
NpgsqlDataReader reader = command.ExecuteReader();
reader.Read(); //获取数据
string data;
data=reader.GetString(); //关闭数据库
connection.Close();
以上即为操作数据库并读取数据的方法。首先连接数据库,之后构造SQL语句并应用于postgresql中,接着构造NpgsqlDataReader,应用NpgsqlCommand.ExecuteReader()方法读取数据,最终根据读取出的数据类型进行获取数据。读取完毕后不要忘记关闭数据库。
如果不读取数据,而仅仅是进行SQL语句的操作,例如修改或删除等,方法类似,但需要使用NpgsqlCommand.ExecuteNonQuery()方法。
具体代码如下:
//连接数据库
NpgsqlConnection connection = new NpgsqlConnection("Server = 127.0.0.1; Port = 5432; UserId = postgres; Password = postgres;Database = db_name");
connection.Open(); //构造SQL语句
string sqlCommand = "UPDATE table_name SET column1=update_attribute WHERE column2=origin_attribute";
NpgsqlCommand command = new NpgsqlCommand(sqlCommand, connection); //执行SQL语句
command.ExecuteNonQuery(); //关闭数据库
connection.Close();
2. Python连接PostgreSQL
使用Python连接PostgreSQL可以使用多种第三方包,而PostgreSQL官方推荐的是Psycopg2这个包,同时支持Python2和Python3的版本。可以使用pip进行安装:
pip install psycopg2
安装完成后,即可引用到自己的代码中:
import psycopg2
具体连接数据库并进行操作的代码如下:
//连接数据库
connection = psycopg2.connect(database="db_name", user="postgres",password="postgres",host="127.0.0.1",port="")
//获取游标
cursor = connection.cursor()
//设置SQL语句
sql_command_select = "SELECT * FROM table_name;" try:
//执行SQL语句
cursor.execute(sql_command_select)
//获取所有的数据
data_all = cursor.fetchall()
for data in data_all:
//遍历数据
print(data)
except Exception as e:
print(e)
//如果出现错误,数据库复原
connection.rollback()
在代码中,可以看到首先是连接数据库,之后获取游标,构造SQL语句,并完成了对于数据的查询。在上例中,获取全部的数据使用的是cursor.fetchall()函数,倘若只是获取一条数据,可以使用cursor.fetchone()函数一条一条数据进行读取。
倘若需要对数据库进行修改、添加、删除等功能,只需要使用cursor.execute()函数即可完成SQL语句的执行。
注意对于数据的读取需要加上异常检测的代码,倘若读取数据出错,需要使用connection.rollback()函数恢复到数据库出错前的状态,否则会一直卡在出错的地方不能继续。
3. MATLAB连接PostgreSQL
MATLAB连接PostgreSQL数据库首先需要下载.jar(JDBC)文件。地址:https://jdbc.postgresql.org/download.html
之后需要将下载的jar文件添加到MATLAB的jar目录中。
之后输入在MATLAB命令行中输入:
edit classpath.txt
在文本最后添加这条代码:
$matlabroot/java/jar/postgresql-9.4.1212.jre6.jar
之后保存并关闭文本,重启MATLAB,输入:
javaclasspath
倘若出现的文本中最后出现了postgresql的路径,说明添加成功。
之后即可进行数据库的连接和操作。
MATLAB连接数据库和操作数据库的方法如下:
%连接数据库
connection=database('db_name','postgres','postgres','org.postgresql.Driver','jdbc:postgresql://localhost:5432/db_name');
%构造SQL语句
sqlcommand='select * from table_name;'
%执行SQL语句
cursor=exec(connection,sqlcommand);
%获取指定数量的数据
row=fetch(cursor,1);
与前面的代码结构类似,首先是连接数据库,之后构造SQL语句,完成对于数据的查询。在上例中,获取数据使用的是fetch()函数,分别传入连接的数据库和具体数量。
倘若需要对数据库进行修改、添加、删除等功能,只需要使用exec(connection, sqlcommand)函数即可完成SQL语句的执行。
C#/Python/MATLAB操作PostgreSQL数据库的更多相关文章
- Python 操作 PostgreSQL 数据库
我使用的是 Python 3.7.0 PostgreSQL可以使用psycopg2模块与Python集成. sycopg2是用于Python编程语言的PostgreSQL数据库适配器. psycopg ...
- Python之操作redis数据库
使用redis模块 一.操作redis 1.添加信息 (1)直接建key-value信息: 右键-Add New Key,手动添加key和value 右键-Console,打开控制台,写入命令 (2) ...
- python 之操作mysql 数据库实例
对于python操作mysql 数据库,具体的步骤应为: 1. 连接上mysql host 端口号 数据库 账号 密码2. 建立游标3. 执行sql(注意,如果是update,insert,delet ...
- hibernate 操作 Postgresql 数据库报 operator does not exist: integer = character varying
网上的说法如下: Java开发Postgresql 数据库兼容应用的问题,与Oracle有一些不同: Java类型映射数据库类型的不同,Oracle jdbc驱动程序处理Java String类型可正 ...
- python操作postgresql数据库
import psycopg2 conn = psycopg2.connect(database=") cur = conn.cursor() cur.execute("CREAT ...
- python 安装操作 MySQL 数据库.
以ubuntu和mysql为例 检查自己的机器上面有没有安装数据库 xpower@xpower-CW65S:~$ sudo service mysql start [sudo] xpower 的密码: ...
- Jmeter_实现操作postgresql数据库
[环境] ①Jmeter版本:3.2,JDK:1.8: ②postgresql驱动包postgresql-9.3-1103.jdbc4,将该jar包置于..\apache-jmeter-3.2\lib ...
- Python之操作HBASE数据库
目前有两个库可以操作HBASE:hbase-thrift 和 happybase happybase使用起来比较简单方便,因此重点学习该库,hbase-thrift只做简要介绍. (一)hbase- ...
- Python之 操作 MySQL 数据库
什么是MySQLdb? MySQLdb 是用于Python链接Mysql数据库的接口,它实现了 Python 数据库 API 规范 V2.0,基于 MySQL C API 上建立的. 安装 Pytho ...
随机推荐
- 【redis】redis的 key的命名规则
key的命名规则 定义为 MS-TEN:SESSION_KEY_IN_LOGIN_NAME:fqh 使用:进行分割,这样存入redis的是有层次结构的,如下
- [转] AS3地图拼接与战争迷雾的实现
在开发游戏的过程中,特别是地图编辑器中,需要利用最少的资源,实现最丰富的地形地貌.虽然现在众多的RPG开始使用整图,但是我们偶尔还是需要能够让玩家自己编辑地图,或者其他需要自动进行地图构建的功能.另外 ...
- angular 的杂碎报错小知识
1:[ng:areq] Angular出现这种错误的原因,是由于没有在页面中使用模块引入controller导致的 所以 请确保你定义了这个controller后也引用了它. 2:Failed to ...
- java中List、Map、Set、Collection、Stack、Queue等的使用
java中这几个东西是比较常用的,虽然我用的不多,也正是因为用的不多,所以我一直搞不清楚他们之间的具体用法以及相互之间的关系,现在特单独作为一个东西来总结一下. 本文参考一下资料: 1.<jav ...
- POJ1063Cable master(二分搜索)
Cable master Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 36288 Accepted: 7743 Des ...
- 关于java.lang.ClassNotFoundException
关于java.lang.ClassNotFoundException,在自己的程序中,也出现过好几次了,每次找到原因之后,又会发觉原来是以前处理过的. java.lang.ClassNotFoundE ...
- FlatBuffers使用简介
@[tools|flatbuffers|opensource] 概述### Google在今年6月份发布了跨平台序列化工具FlatBuffers,提供了C++/Java/Go/C#接口支持,这是一个注 ...
- RabbitMQ介绍
(一)RabbitMQ基本概念 RabbitMQ是流行的开源消息队列系统,用erlang语言开发.我曾经对这门语言挺有兴趣,学过一段时间,后来没坚持.RabbitMQ是 AMQP(高级消息队列协议)的 ...
- Jconsole 测试.
Jconsole 测试. 1 下载并安装 d:\Program Files\Java\jdk1.8.0_111\ JDK自带,Windows下图形界面,监控分析Java程序 2 查看jmx进程号 [r ...
- 使用cython把python编译so
1.需求 为了保证线上代码安全和效率,使用python编写代码,pyc可直接反编译,于是把重要代码编译so文件 2.工作 2.1 安装相关库: pip install cython yum insta ...