目录

一、PostgreSQL安装

1、下载

2、安装

二、PostgreSQL操作

1、数据库操作

2、表操作

3、数据操作


一、PostgreSQL安装

本章节以windows系统安装为例,讲解PostgreSQL 15.0的安装过程。

1、下载

访问PostgreSQL官方网站,下载对应的安装包,也可以在下载页面下载对应的安装包。

2、安装

windows安装选择各种默认设置即可,但是在我的win10系统安装时,最后出现服务无法正常启动的错误,导致安装无法正常结束,可以参考以下步骤:

① 右键我的的电脑=》管理=》服务和应用程序=》服务;

② 右键postgresql-x64-15=》属性=》登录身份选择“本地系统账户”,如下图所示。

二、PostgreSQL操作

通用命令:

查看已存在数据库\l
进入数据库\c 数据库名
查看表格\d
查看指定表格\d 表名

1、数据库操作

查询所有数据库:

select datname from pg_database;

创建数据库:

create database 数据库名 owner 所属用户 encoding UTF8;

进入数据库:

\c 数据库名

删除数据库:

drop database 数据库名;

2、表操作

创建表:

CREATE TABLE table_name(
   column1 datatype,
   column2 datatype,
   column3 datatype,
   .....
   columnN datatype,
   PRIMARY KEY( 一个或多个列 )
);

查看表格:

\d table_name

删除表格:

DROP TABLE table_name;

3、数据操作

插入数据:

# 指定字段插入
INSERT INTO TABLE_NAME (column1, column2, column3,...columnN) VALUES (value1, value2, value3,...valueN);

# 全部字段插入
INSERT INTO TABLE_NAME VALUES (value1,value2,value3,...valueN);

选择数据:

SELECT column1, column2,...columnN FROM table_name;

更新数据:

UPDATE table_name SET column1 = value1, column2 = value2...., columnN = valueN WHERE [condition];

删除数据:

DELETE FROM table_name WHERE [condition];

三、插件

以pgvector插件(第三方插件)为例,给出安装和使用教程。

1、下载gpvector插件

从地址pgvector下载插件源码,按照教程中的如下命令安装插件:

set "PGROOT=C:\Program Files\PostgreSQL\15"
git clone --branch v0.4.4 https://github.com/pgvector/pgvector.git
cd pgvector
nmake /F Makefile.win
nmake /F Makefile.win install

说明:在windows环境下安装visual studio即可使用nmake,如果提示该命令不存在,可以在安装目录进行搜索后添加到环境变量。

2、测试

本次使用python代码库psycopg进行测试,首先安装psycopg:

pip install --upgrade pip            
pip install "psycopg[binary]"

 测试代码如下,测试特征向量的匹配,使用内积匹配(修改密码、用户名等配置):

import psycopg
from pgvector.psycopg import register_vector

import numpy as np


conn = psycopg.connect(dbname='postgres', autocommit=True, password="your password", user="postgres")
conn.execute('CREATE EXTENSION IF NOT EXISTS vector')
register_vector(conn)

conn.execute('DROP TABLE IF EXISTS python_test')
conn.execute('CREATE TABLE python_test (id bigserial PRIMARY KEY, embedding vector(512))')

embeddings = np.random.rand(10000, 512)
sql = 'INSERT INTO python_test (embedding) VALUES ' + ','.join(['(%s)' for _ in embeddings])
params = [embedding for embedding in embeddings]
conn.execute(sql, params)
conn.execute('CREATE INDEX ON python_test USING ivfflat (embedding vector_ip_ops)')

embedding = np.random.rand(512)
result = conn.execute('SELECT id, embedding FROM python_test ORDER BY embedding <#> %s LIMIT 15', (embedding,)).fetchall()
for single_line in result:
    id, embed = single_line
    print(id, np.dot(embedding, embed), embedding.shape, embed.shape)
conn.close()

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐