postgresql基本命令

Posted in 2016-8-8 21:53 | Category: Linux | Tags: postgresql linux

创建表

CREATE TABLE weather (
    city            varchar(80),
    temp_lo         int,           -- low temperature
    temp_hi         int,           -- high temperature
    prcp            real,          -- precipitation
    date            date
);

-- 开始为注释

删除表

DROP TABLE tablename;

插入数据

INSERT INTO weather VALUES ('San Francisco', 46, 50, 0.25, '1994-11-27');

或者

INSERT INTO weather (city, temp_lo, temp_hi, prcp, date)
    VALUES ('San Francisco', 43, 57, 0.0, '1994-11-29');

或者

COPY weather FROM '/home/user/weather.txt';

查询

基本查询

SELECT * FROM weather;

或者

SELECT city, (temp_hi+temp_lo)/2 AS temp_avg, date FROM weather;

消除重复行

SELECT DISTINCT city
    FROM weather
    ORDER BY city;

多表查询

SELECT weather.city, weather.temp_lo, weather.temp_hi,
       weather.prcp …

如何备份postgresql数据库

Posted in 2015-12-26 8:26 | Category: Linux | Tags: postgresql sql linux

对于网站来说数据无疑是最重要的,而养成备份数据的习惯更加重要, 忽然想到一句经典台词

曾经有一份数据摆在我的面前,
可我没有备份,
直到数据丢失后才后悔莫及,
人世间最痛苦的事莫过于此,
如果上天能给我一次再来一次的机会,
我会对那份数据说五个字:我要备份你,
如果非要在这份备份上加一个期限,我希望是每天!

进入主题,这只是对数据进行简单的备份

怎么备份数据

shell脚本

#!/bin/bash

backup_time=`date +%Y%m%d`
pg_dump articledb > /home/xxx/backup/article_$backup_time.sql
# articledb是要备份的数据库名称
echo "backup finished"

保存为backup_db.sh
注意
xxx是数据库用户,并且是super权限
可以这样

$ sudo -i -u postgres
$ [sudo] xxx 的密码:
postgres~ $ createuser xxx --interactive 
# 创建数据库用户,我的是archlinux,不同系统可能有所不同

定时备份数据

crontab -e

输入

0 22 * * * /home/xxx/backup/backup_db.sh
#表示每天22点定时备份数据

如果你需要在其他时间段备份数据,请查阅crontab文档

ok,就这样

postgresql学习2——使用

Posted in 2015-12-22 8:50 | Category: Linux | Tags: postgresql sql linux

postgresql的简单使用

python

参考资料

安装psycopg2

推荐使用venv虚拟环境

pip install psycopg2

这个API打开一个连接到PostgreSQL数据库。如果成功打开数据库时,它返回一个连接对象

psycopg2.connect(database="testdb", user="postgres", password="cohondob", host="127.0.0.1", port="5432")

该程序创建一个光标将用于整个数据库使用Python编程。

connection.cursor()

此例程执行SQL语句。可被参数化的SQL语句(即占位符,而不是SQL文字)。 psycopg2的模块支持占位符用%s标志

cursor.execute(sql [, optional parameters])

该程序执行SQL命令对所有参数序列或序列中的sql映射

curosr.executemany(sql, seq_of_parameters)

这个程序执行的存储数据库程序给定的名称。该程序预计为每一个参数,参数的顺序必须包含一个条目。

curosr.callproc(procname[, parameters])

这个只读属性,它返回数据库中的行的总数已修改,插入或删除最后 execute*().

cursor.rowcount

此方法提交当前事务。如果不调用这个方法,无论做了什么修改,自从上次调用commit()是不可见的,从其他的数据库连接。

connection.commit()

此方法会回滚任何更改数据库自上次调用commit()方法

connection.rollback()

此方法关闭数据库连接。请注意,这并不自动调用commit()。如果你只是关闭数据库连接而不调用commit()方法首先,那么所有更改将会丢失!

connection.close()

这种方法提取的查询结果集的下一行,返回一个序列,或者无当没有更多的数据是可用的。

cursor.fetchone()

这个例程中取出下一个组的查询结果的行数,返回一个列表。当没有找到记录,返回空列表。该方法试图获取尽可能多的行所显示的大小参数。

cursor.fetchmany([size=cursor.arraysize])

这个例程获取所有查询结果(剩余)行,返回一个列表。空行时则返回空列表

cursor.fetchall()

可以看出,psycopg2的操作与sqlite类似除了连接数据库

postgresql学习1——安装

Posted in 2015-12-22 8:49 | Category: Linux | Tags: postgresql sql linux

最近从sqlite转到postgresql,虽然postgresql比sqlite更加复杂

archlinux

参考资料

$ sudo pacman -S postgresql
$ sudo mkdir /var/lib/postgres/data #如果已存在则可以不建立
$ sudo chmod -R postgres:postgres /var/lib/postgres/data
由于我安装系统时没有生成en_US_UTF-8本地化文件(如果已经生成了的就
不必再生成)
$ sudo vim /etc/locale.gen #找到en_US_UTF-8,注释掉
$ locale-gen

然后运行
$ sudo -i -u postgres #或者使用root账户su - postgres
$ initdb --locale en_US.UTF-8 -E UTF8 -D '/var/lib/postgres/data'
$ createuser -i #输入你的账户名称,并给管理员权限

最好给postgres用户设置密码
(注意不是linux系统帐号)
# su - postgres
$ psql
>ALTER USER postgres WITH PASSWORD 'yourpasswd';

centos

参考资料

这里 下载所需要的rpm安装包
或者直接

# yum localinstall http://yum.postgresql.org/9.4/redhat/rhel-6-x86_64/pgdg-centos94-9.4-1.noarch.rpm
# yum list postgres*
# yum install postgresql94-server
# yum install postgresql94-contrib

# service postgresql initdb  #初始化数据库
# service postgresql start #启动数据库
# chkconfig postgresql on  #将数据库服务加入启动列表
修改PostgreSQL 数据库用户postgres的密码
(注意不是linux系统帐号)
# su - postgres
$ psql
>ALTER USER postgres WITH PASSWORD 'yourpasswd';