psycopg2+postgis+pgAdmin4
基于docker的postgres 部署见这篇 https://www.cnblogs.com/xuanmanstein/p/7742647.html
连接数据库
import psycopg2class MyTestCase(unittest.TestCase): @classmethod
def setUpClass(cls):
db = '172.19.0.12'
# root用户 先连到默认数据库
connection_parameters = {
'host': db,
'database': 'postgres',
'user': 'postgres',
'password': 'example'
}
cls.conn = psycopg2.connect(**connection_parameters)
cls.conn.autocommit = True
创建ROLE或USER
必须用连接其他数据库的其他用户,才能删除和创建别的用户,典型如默认用户postgres 连接到postgres,然后删除创建别的用户,和别的数据库
def test_create_user(self):
#创建用户
name = 'stavka'
pwd = ''
SQL = f'''
DROP ROLE IF EXISTS {name};
CREATE ROLE {name};
ALTER ROLE {name} ENCRYPTED PASSWORD '{pwd}';
ALTER ROLE {name} LOGIN CREATEDB CREATEROLE;
'''
# 执行
with self.conn.cursor() as cursor:
cursor.execute(SQL)
先删除(如果存在),再创建,再设置密码,最后设置各种权限
创建/删除数据库
为了使用postgis,在docker镜像建立的时候,已经1个template_postgis数据库,安装了各种extention,
然后就可以用它作为模板,来创建新数据库
self.conn.autocommit = True
self.conn.set_isolation_level(0)
with self.conn.cursor() as cur:
cur.execute(f'''DROP DATABASE IF EXISTS {db_name};''')
cur.execute(f'''CREATE DATABASE {db_name} OWNER {role_name} TEMPLATE template_postgis;''')
如果pgAdmin4里已经连接了 template 和删除的目标数据库中任意1个,则会报错
psycopg2.errors.ObjectInUse: database "XXX" is being accessed by other users
DETAIL: There is 1 other session using the database.
psycopg2+postgis+pgAdmin4的更多相关文章
- 将PostGIS转化为GeoJSON
#!/usr/bin/env python # -*- coding: utf-8 -*- import psycopg2 import json from geojson import loads, ...
- PostgreSQL(PostGIS)安装和入门的若干问题
1. 装完PostgreSQL后记得打开pgAdmin4启动一下服务器和启动一下数据库,否则PostGIS装不上. 2. pgAdmin4是网页,而3是客户端,当然都可以在File - Prefere ...
- 用docker-compose部署postgres+ postgis
20190411更新.之前写的太啰嗦,也不删了,重新来.小坑还是有的 psql 命令行客户端 因为postgres用docker镜像安装,所以host不需要安装pg,只需要安装客户端 sudo apt ...
- Geoserver+Postgresql+PostGIS 进行数据发布
1.postgressql+postgis安装 由于我已经安装了,因此没法进行截图,给出下载地址 下载地址:https://www.postgresql.org/ 记得一定要下载edu的版本 因为这个 ...
- 学习笔记之PostgreSQL / pgAdmin / Psycopg / PostGIS
PostgreSQL: The world's most advanced open source database https://www.postgresql.org/ POSTGRESQL: T ...
- GIS on CentOS 7 之 PostgreSQL & PostGIS
PostgreSQL & PostGIS 安装postgresql 配置好yum源之后,使用yum info postgresql可发现 postgresql的版本为9.2.23,若想安装最新 ...
- Python访问PostGIS(建表、空间索引、分区表)
#encoding: utf-8 __author__ = 'Administrator' import psycopg2 import ppygis import datetime import s ...
- (数据科学学习手札93)利用geopandas与PostGIS进行交互
本文完整代码及数据已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 PostGIS作为postgresql针对 ...
- PostGIS(解压版)安装
1.软件下载 postgresql-9.6.1-1-windows-x64-binaries.zip https://www.postgresql.org/download/windows/ post ...
随机推荐
- Postman接口自动化测试实例用到的完整的SM2前端加密算法代码
var __g__ = {}; !function(t,e){"object"==typeof exports?module.exports=exports=e():"f ...
- python可以提高程序执行速度N倍你知道吗?
1.1.Numba的约5分钟指南 Numba是Python的即时编译器,它最适用于使用NumPy数组和函数以及循环的代码.使用Numba的最常用方法是通过其装饰器集合,可以应用于您的函数来指示Numb ...
- Cache Aside Pattern
Cache Aside Pattern 即旁路缓存是缓存方案的经验实践,这个实践又分读实践,写实践 对于读请求 先读cache,再读db 如果,cache hit,则直接返回数据 如果,cache m ...
- Docker容器中安装vim
我在docker中安装了jexus.使用vim编辑default配置文件的时候提示 vim: command not found 原因是docker中没有安装vim命令 如果你直接输入 apt-ge ...
- 递归函数 Vue ElementUI
对树形菜单的递归操作,首先应该对树形菜单数据进行整理,优化成自己需要的类型 比如Vue + ElementUI的动态侧边栏数据 export function routerRoleToPretty ( ...
- PHP filter_var 函数用法
先介绍下PHP Filter PHP手册地址:http://php.net/manual/zh/ref.filter.php PHP 过滤器用于对来自非安全来源的数据(比如用户输入)进行验证和过滤. ...
- openGL实现图形学扫描线种子填充算法
title: "openGL实现图形学扫描线种子填充算法" date: 2018-06-11T19:41:30+08:00 tags: ["图形学"] cate ...
- Python在终端通过pip安装好包以后,在Pycharm中依然无法使用的解决办法
在终端通过pip装好包以后,在pycharm中导入包时,依然会报错.新手不知道具体原因是什么,我把我的解决过程发出来. pip install 解决方案一: 在Pycharm中,依次打开File--- ...
- 解决SSH远程执行命令找不到环境变量的问题
通过SSH执行远程主机的命令或脚本时,经常会出现找不到自定义环境变量的问题.但是,如果通过SSH登录远程主机,然后再执行相同的命令或脚本,那么此时执行又是成功的.两种相似的方法,得到的结果却截然不同, ...
- golang学习笔记20 一道考察对并发多协程操作一个共享变量的面试题
golang学习笔记20 一道考察对并发多协程操作一个共享变量的面试题 下面这个程序运行的能num结果是什么? package main import ( "fmt" " ...