PostgreSQL and SQLAlchemy [ubuntu]
文章目录
- PostgreSQL
- 安装PostgreSQL
- 常用PostgreSQL命令
- 常用PostgreSQL操作
- 修改用户密码
- 添加用户并设置密码
- 创建数据库并指定一个拥有者
- 连接另一个数据库
- 删除table中的记录
- 删除table
- SQLAlchemy
- 安装SQLAlchemy
- 检查版本
- 连接某个已经创建的数据库
- 建立一个Table
- 使用session往table里插入记录
- 使用session查询(query)
- session中的roll back
PostgreSQL
×××PostgreSQL官方教程×××
安装PostgreSQL
首先,你可以检查下是否已经安装过PostgreSQL
$ psql --version
psql (PostgreSQL) 10.15 (Ubuntu 10.15-0ubuntu0.18.04.1)
如果没有安装,则装一下。
sudo apt-get update
sudo apt-get install postgresql postgresql-client
常用PostgreSQL命令
安装完之后,你就可以使用了,他这里面的逻辑要好好体会下。不说废话,大家在下面的实践中自行体会。
# 首先你需要变成root用户
sudo -i
# 然后你要变成postgres用户, 这是PostgreSQL的超级用户
su postgres
# 此时你还没进入数据库,psql进入数据库。
~$ psql
psql (12.4 (Ubuntu 12.4-0ubuntu0.20.04.1))
Type "help" for help.
postgres=#
# 注意:此时,你是以postgres用户,进入到了名为postgres的数据库(database)中
进入PostgreSQl 之后,你可以查看当前已存在的数据库,创建数据库,删除数据库,也可以对增删用户,以及查看数据库的表啊等等。
Command | Description |
---|---|
\l | 查看已有的数据库(database) |
\l+ | 查看已有的数据库(database)的详细信息 |
\dt | 查看已有的表(table) |
\dt+ | 查看已有的表(table)的详细信息 |
\dn | 查看已有的模式(schemas) |
\du | 查看所有的用户(role) |
\conninfo | 查看当前连接信息(db host, db name, db user) |
常用PostgreSQL操作
修改用户密码
postgres=# \password postgres
添加用户并设置密码
postgres=# CREATE USER zdx WITH PASSWORD '123456'; # 创建用户
创建数据库并指定一个拥有者
postgres=# CREATE DATABASE test OWNER zdx;
连接另一个数据库
postgres=# \c test
删除table中的记录
DELETE FROM table_name WHERE ID=1; #没有WHERE的话,就删除整个表的内容。
删除table
drop table table_name;
我们已经创建了一个test database. 接下来我们准备使用SQLAIchemy工具来进一步操作这个数据库,比如建表等。关于更多使用PostgreSQL命令直接操作数据库大家参考官方教程。
SQLAlchemy
×××SQLAlchemy1.3官方教程×××
个人觉得还不错的一个SQLAlchemy教程
安装SQLAlchemy
pip install sqlalchemy
检查版本
import sqlalchemy as db
db.__version__
'1.3.17'
连接某个已经创建的数据库
# Scheme: "postgres+psycopg2://<USERNAME>:<PASSWORD>@<IP_ADDRESS>:<PORT>/<DATABASE_NAME>"
DATABASE_URI = 'postgres+psycopg2://zdx:123456@localhost:5432/test'
engine = db.create_engine(DATABASE_URI)
Tips:
engine.execute(…) 可以直接用engine来操作数据库。
也可以通过connection来操作:
trans = conn.begin()
conn.execute('INSERT INTO "EX1" (name) ''VALUES ("Hello")')
trans.commit()
Engine.execute() 和 Connection.execute() 功能一样。
建立一个Table
ORM工具操作数据库最大特点,就在于把数据库里的内容都当做object.
定义一个Table,就是对base类的继承。
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
# 定义一个users Table object
from sqlalchemy import Column, Integer, String
class User(Base):__tablename__ = 'users'id = Column(Integer, primary_key=True)name = Column(String)password = Column(String)def __repr__(self):return f'user {self.name}'
此时只是定义了users 这个Table, 数据库中还没任何改变,执行下面语句就会在连接的数据库中,创建一个users的空表。
Base.metadata.create_all(engine)
到数据库中,查看是否创建成功
test=# \dList of relationsSchema | Name | Type | Owner
--------+--------------+----------+-------public | users | table | zdxpublic | users_id_seq | sequence | zdx
(2 rows)
使用session往table里插入记录
from sqlalchemy.orm import sessionmaker
Session = sessionmaker(bind=engine)
s = Session()
user = User(name='John Snow', password='johnspassword')
s.add(user)
s.commit()
#s.close()
到数据库中,查看是否插入成功
test=# select * from users;id | name | password
----+-----------+---------------1 | John Snow | johnspassword
(1 row)
插入多条记录
s.add_all([User(name='Wendy Williams', password='wendypassword'),User(name='Mary Contrary', password='marypassword'),User(name='Fred Flintstone', password='fredpassword')
])
s.commit()
到数据库中,查看是否插入成功
test=# select * from users;id | name | password
----+-----------------+---------------1 | John Snow | johnspassword2 | Wendy Williams | wendypassword3 | Mary Contrary | marypassword4 | Fred Flintstone | fredpassword
(4 rows)
使用session查询(query)
query = s.query(User) # 查询 user table
query.count() #总共多少记录
query.first() #显示查询到第一条记录
query.all() #显示查询的所有的记录
session中的roll back
fake_user = User(name='fakeuser', password='fakepassword')
s.add(fake_user)
s.query(User).filter_by(name='fakeuser').first()
user fakeuser
fake_user in s
True
s.rollback()
fake_user in s
False
PostgreSQL and SQLAlchemy [ubuntu]相关推荐
- PostgreSql新建数据库——Ubuntu
添加新用户和新数据库 方式方法很多,这里介绍一种个人常用的. 新建一个Linux新用户,这里为yyds(会提示设置密码(密码还是要设置的啦),其他默认就好(直接回车,最后输入y,然后回车就搞定啦!)) ...
- SQLALchemy (ORM工具)[PostgreSQL为例]
文章目录 SQLAlchemy Basics Tutorial Install a Postgres server locally and create a database Install requ ...
- ubuntu 安装mysql ,postgresql (转)
2019独角兽企业重金招聘Python工程师标准>>> mysql http://wiki.ubuntu.org.cn/MySQL%E5%AE%89%E8%A3%85%E6%8C%8 ...
- 在Ubuntu 18.04上安装PostgreSQL 11和PgAdmin4
In this guide, you will learn how to install PostgreSQL 11 and PgAdmin4 on Ubuntu 18.04 LTS. 在本指南中,您 ...
- Ubuntu Server 20.04 LTS 安装配置 PostgreSQL
1 & 环境准备 上面一篇文章我们讲解了在 Windows 环境上面安装 PostgreSQL 的简单介绍,准备环境基本一样. ubuntu server 20.04 镜像下载地址 => ...
- 入门系列之使用Sysdig监视您的Ubuntu 16.04系统
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由乌鸦 发表于云+社区专栏 介绍 Sysdig是一个全面的开源系统活动监控,捕获和分析应用程序.它具有强大的过滤语言和可自定义的输出,以 ...
- Ubuntu下Postgres安装与配置
postgres8.4安装配置: 1.安装postgres8.4 ~$ sudo apt-get install postgresql 2.修改超级管理员postgres密码: 以系统用户运行psql ...
- 入门系列之使用Sysdig监视您的Ubuntu 16.04系统 1
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由乌鸦 发表于云+社区专栏 介绍 Sysdig是一个全面的开源系统活动监控,捕获和分析应用程序.它具有强大的过滤语言和可自定义的输出,以 ...
- 开源的数据库,PostgreSQL 基础入门实战
PostgreSQL 简介与安装 实验介绍 大家好,本课程是关于 PostgreSQL 数据库的使用说明,细致讲解 PostgreSQL 的特性与使用方法,尽量做到描述朴实.深入浅出.示例充足.覆盖重 ...
最新文章
- oracle管理员是sys吗,Oracle管理员sys,system登录无权限的坑
- mysql基本数据库操作
- 使用JDOM2.0.4 操作/解析xml
- python除法函数一般如何命名_关于python:当用于除法时,’/’和’//’之间有什么区别?...
- 下载OneDrive共享的数据集
- FreeRTOS内核实现03:临界段的保护
- FPGA与CPLD的区别
- VS2019配置opencv4.1.2(永久配置)
- 《Ray Tracing in One Weekend》——Chapter 10: Positionable camera
- poj 3468 A Simple Problem with Integers 基础线段树
- Amoeba Architecture
- 学生选课系统代码-1start.py代码
- 微信公共号给客户发送消息提醒/模板消息(如业务到期提醒 ,订单提醒,帐户变动提醒)
- wpf制作的画图软件
- 软件开发人员的简历项目经验怎么写?
- 天龙八部荣耀版体验服服务器未响应,《天龙八部荣耀版》体验服评测:用竖版画面重新诠释天龙江湖...
- 【高德地图API】Web地图开发系列(一)
- 快速开始keras 教程
- 算法可以用不同的语言描述如果用c语言,【判断题】算法可以用不同的语言描述,如果用C 语言或PASCAL语言等高级语言来描述,则算法实际上就是程序了。...
- shtml 是什么?
热门文章
- 终极解决办法rvct Cannot obtain license for Compiler (feature compiler) with license version = 3.1...
- 查看及修改当前数据库的所支持的数据库引擎以及默认数据库引擎
- python(条件语句和基本数据类型)
- Java多线程基础总结
- [ZJOI2006]物流运输
- wordpress 后台404解决办法
- 简要分析JM8.6代码中foreman_part_qcif.yuv文件的YUV数据如何悄无声息地进入程序
- Perl文件处理示例——批量添加Copyright版权信息
- SQLSERVER数据库设置varchar类型主键自增方法
- spring多个AOP执行先后顺序(面试问题:怎么控制多个aop的执行循序)