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
    

如果你的系统不支持 pip 命令,可以使用以下方式安装:
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关系型数据库的安装

选择相应的版本进行安装https://dev.mysql.com/downloads/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关系型数据库

以下实例链接 Mysql 的 TESTDB 数据库
实例(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 = 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_NAME  CHAR(20) NOT NULL,        
         LAST_NAME  CHAR(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是自由的对象-关系型数据库服务器(数据库管理系统),在灵活的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关系型数据库优点

从技术角度来讲,PostgreSQL 采用的是比较经典的C/S(client/server)结构,也就是一个客户端对应一个服务器端守护进程的模式,这个守护进程分析客户端来的查询请求,生成规划树,进行数据检索并最终把结果格式化输出后返回给客户端。为了便于客户端的程序的编写,由数据库服务器提供了统一的客户端 C 接口。而不同的客户端接口都是源自这个 C 接口,比如ODBC,JDBC,Python,Perl,Tcl,C/C++,ESQL等, 同时也要指出的是,PostgreSQL 对接口的支持也是非常丰富的,几乎支持所有类型的数据库客户端接口。这一点也可以说是 PostgreSQL 一大优点。

Postgresql的安装
选择对应的版本进行安装
Python操作MySQL、PostgreSQL关系型数据库_第1张图片

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 = None

try:    
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 = False        

try:            
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 flag     

def GetConnectInfo(self):        
print("连接信息:")        
print("服务器:%s , 用户名:%s , 数据库:%s " % (self.host, self.userName, self.dataBaseName)) 

你可能感兴趣的:(数据库,Python)