数据库|Python操作MySQL、PostgreSQL关系型数据库
1.Python操作mysql关系型数据库
MySQL
是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件。MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。
- 使用pymysql操作mysql数据库
pip3 install PyMySQL
1、使用 git 命令下载安装包安装(你也可以手动下载):
$ git clone https://github.com/PyMySQL/PyMySQL
$ cd PyMySQL/
$ python3 setup.py install
2、如果需要指定版本号,可以使用 curl 命令来安装:
$ # X.X 为 PyMySQL 的版本号
$ curl -L https://github.com/PyMySQL/PyMySQL/tarball/pymysql-X.X | tar xz
$ cd PyMySQL*
$ python3 setup.py install
- mysql关系型数据库的安装
centos7安装mysql
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
rpm -ivh mysql-community-release-el7-5.noarch.rpm
yum update
yum install mysql-server
权限设置:
chown mysql:mysql -R /var/lib/mysql
初始化 MySQL:
mysqld --initialize
启动 MySQL:
systemctl start mysqld
- mysql关系型数据库的docker安装
docker pull mysql docker run --name mysql -d --restart always -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -v /docker/mysql_data:/var/lib/mysql mysql
- Python操作mysql关系型数据库
实例(Python 3.0+)
#!/usr/bin/python3
import pymysql#打开数据库连接
db = pymysql.connect("localhost","testuser","test123","TESTDB" )#使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()#使用 execute()方法执行 SQL 查询
cursor.execute("SELECT VERSION()")#使用 fetchone() 方法获取单条数据.
data = https://www.it610.com/article/cursor.fetchone()
print ("Database version : %s " % data)#关闭数据库连接
db.close()
创建数据库表
如果数据库连接存在我们可以使用execute()方法来为数据库创建表,如下所示创建表
EMPLOYEE:
实例(Python 3.0+)
#!/usr/bin/python3
import pymysql#打开数据库连接
db = pymysql.connect("localhost","testuser","test123","TESTDB" )#使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()#使用 execute() 方法执行 SQL,如果表存在则删除cursor.
execute("DROP TABLE
IF EXISTS EMPLOYEE")#使用预处理语句创建表
sql = """CREATE TABLE EMPLOYEE (
FIRST_NAMECHAR(20) NOT NULL,
LAST_NAMECHAR(20),
AGE INT,
SEX CHAR(1),
INCOME FLOAT )"""
cursor.execute(sql)# 关闭数据库连接
db.close()
数据库插入操作
#!/usr/bin/python3
import pymysql#打开数据库连接
db = pymysql.connect("localhost","testuser","test123","TESTDB" )#使用cursor()方法获取操作游标
cursor = db.cursor()#SQL 插入语句
sql = "INSERT INTO EMPLOYEE(FIRST_NAME, \
LAST_NAME, AGE, SEX, INCOME) \
VALUES ('%s', '%s',%s,'%s',%s)" % \
('Mac', 'Mohan', 20, 'M', 2000)
try:
# 执行sql语句
cursor.execute(sql)
# 执行sql语句
db.commit()
except:# 发生错误时回滚
db.rollback()#关闭数据库连接
db.close()
数据库查询操作
#!/usr/bin/python3
import pymysql#打开数据库连接
db = pymysql.connect("localhost","testuser","test123","TESTDB" )#使用cursor()方法获取操作游标
cursor = db.cursor()#SQL 查询语句
sql = "SELECT * FROM EMPLOYEE \
WHERE INCOME > %s" % (1000)
try:# 执行SQL语句
cursor.execute(sql)# 获取所有记录列表
results = cursor.fetchall()
for row in results:
fname = row[0]
lname = row[1]
age = row[2]
sex = row[3]
income = row[4] # 打印结果
print ("fname=%s,lname=%s,age=%s,sex=%s,income=%s" % \(fname, lname, age, se income ))except:
print ("Error: unable to fetch data") # 关闭数据库连接
db.close()
数据库更新操作
#!/usr/bin/python3
import pymysql#打开数据库连接
db = pymysql.connect("localhost","testuser","test123","TESTDB" )#使用cursor()方法获取操作游标
cursor = db.cursor()#SQL 更新语句
sql = "UPDATE EMPLOYEE SET AGE = AGE + 1 WHERE SEX = '%c'" % ('M')try:#执行SQL语句
cursor.execute(sql)#提交到数据库执行
db.commit()
except:# 发生错误时回滚
db.rollback()#关闭数据库连接
db.close()
数据库删除操作
#!/usr/bin/python3
import pymysql#打开数据库连接
db = pymysql.connect("localhost","testuser","test123","TESTDB" )#使用cursor()方法获取操作游标
cursor = db.cursor()#SQL 删除语句
sql = "DELETE FROM EMPLOYEE WHERE AGE > %s" % (20)try:#执行SQL语句
cursor.execute(sql)#提交修改
db.commit()except:#发生错误时回滚
db.rollback()#关闭连接
db.close()
2.Python操作PostgreSQL系型数据库
简介postgresql关系型数据库优点
PostgreSQL是自由的对象-关系型数据库服务器(数据库管理系统),在灵活的BSD许可证下发行。它在其他开放源代码数据库系统(比如MySQL和Firebird),和专有系统(比如Oracle、Sybase、IBM的DB2和Microsoft SQL Server)之外,为用户又提供了一种选择。
PostgreSQL不寻常的名字导致一些读者停下来尝试拼读它,特别是那些把SQL拼读为"sequel"的人。PostgreSQL开发者把它拼读为"post-gress-Q-L"。(Audio sample,5.6k MP3)。它也经常被简略念为"postgres"。
从技术角度来讲,PostgreSQL 采用的是比较经典的C/S(client/server)结构,也就是一个客户端对应一个服务器端守护进程的模式,这个守护进程分析客户端来的查询请求,生成规划树,进行数据检索并最终把结果格式化输出后返回给客户端。为了便于客户端的程序的编写,由数据库服务器提供了统一的客户端 C 接口。而不同的客户端接口都是源自这个 C 接口,比如ODBC,JDBC,Python,Perl,Tcl,C/C++,ESQL等, 同时也要指出的是,PostgreSQL 对接口的支持也是非常丰富的,几乎支持所有类型的数据库客户端接口。这一点也可以说是 PostgreSQL 一大优点。Postgresql的安装
选择对应的版本进行安装
文章图片
Docker安装postgresql
一、安装
docker pull postgres:9.4
二、运行
docker run --name postgres1 -e POSTGRES_PASSWORD=password -p 5432:5432 -d postgres:9.4
解释:
run,创建并运行一个容器;
--name,指定创建的容器的名字;-e POSTGRES_PASSWORD=password,设置环境变量,指定数据库的登录口令为password;
-p 54321:5432,端口映射将容器的5432端口映射到外部机器的54321端口;-d postgres:9.4,指定使用postgres:9.4作为镜像。
注意:
postgres镜像默认的用户名为postgres,
登陆口令为创建容器时指定的值。
Python使用PostgreSQL
pip install psycopg2
#!/usr/bin/env python3
#-*- coding: utf-8 -*-
import psycopg2
import sys
con = Nonetry:
con = psycopg2.connect(database='postgres',
user='postgres',
password='123')
cur = con.cursor()
cur.execute('SELECT version()')
ver = cur.fetchone()
print(ver)
except psycopg2.DatabaseError as e:
print('Error %s' % e)
sys.exit(1)
finally:
if con:
con.close()
python操作postgresql增删改查示例代码
#-*- coding: utf-8 -*-
import psycopg2
dataBaseName = "weather"
userName = "postgres"
password = "postgres"
host = "localhost"
port = "5432"
class PostGreSQL:#初始化
def __init__(self):
self.dataBaseName = dataBaseName
self.userName = userName
self.password = password
self.host = host
self.port = port
self._conn = self.GetConnect()
if self._conn:
self._cur = self._conn.cursor()#获取数据库连接对象
def GetConnect(self):
conn = Falsetry:
conn = psycopg2.connect(
database=self.dataBaseName,
user=self.userName,
password=self.password,
host=self.host,
port=self.port
)
except Exception as err:
print("连接数据库失败,%s" % err)
else:
return conn#执行查询sql
def ExecQuery(self,sql):
res = ""
try:
self._cur.execute(sql)
res = self._cur.fetchall()
except Exception as err:
print("查询失败, %s" % err)
else:
return res#执行增删改sql
def ExceNonQuery(self,sql):
flag = False
try:
self._cur.execute(sql)
self._conn.commit()
flag = True
except Exception as err:
flag = False
self._conn.rollback()
print("执行失败, %s" % err)
else:
return flagdef GetConnectInfo(self):
print("连接信息:")
print("服务器:%s , 用户名:%s , 数据库:%s " % (self.host, self.userName, self.dataBaseName))
推荐阅读
- Docker应用:容器间通信与Mariadb数据库主从复制
- 2.6|2.6 Photoshop操作步骤的撤消和重做 [Ps教程]
- MongoDB,Wondows下免安装版|MongoDB,Wondows下免安装版 (简化版操作)
- python学习之|python学习之 实现QQ自动发送消息
- 逻辑回归的理解与python示例
- python自定义封装带颜色的logging模块
- 在线版的迅捷思维导图怎么操作()
- 【Leetcode/Python】001-Two|【Leetcode/Python】001-Two Sum
- Python基础|Python基础 - 练习1
- 操作系统|[译]从内部了解现代浏览器(1)