Python连接MySQL、Oracle数据库

一、Python链接MySQL数据库

(1) MySQLdb是用于Python链接Mysql数据库的接口,它实现了Python 数据库API规范V2.0,基于MySQL C API上建立的。
(2) PyMySQL是一个纯Python写的MySQL客户端,它的目标是替代MySQLdb,可以在CPython、PyPy、IronPython和Jython环境下运行.
下面主要介绍这两种方式链接MySQL数据库:

(1)MySQLdb

链接MySQL的test数据库实例:

# 导入模块
import MySQLdb
# 打开数据库连接(1):使用关键字参数
conn = MySQLdb.connect(host='127.0.0.1', port=3306,
                       user='root', passwd='root', db='test', charset='utf8')
# 打开数据库连接(2):也可以使用字典进行连接参数的管理
config = {
    'host': '127.0.0.1',
    'port': 3306,
    'user': 'root',
    'passwd': 'root',
    'db': 'test',
    'charset': 'utf8'
}
conn = MySQLdb.connect(**config)
# 以上两种方式根据需求选择
# 使用cursor()方法获取操作游标 
cursor = conn.cursor()

# 使用execute方法执行SQL语句
cursor.execute("SELECT VERSION()")

# 使用 fetchone() 方法获取一条数据
data1 = cursor.fetchone()
print "Database version : %s " % data1

# 使用 fetchall() 方法获取所有数据
data2 = cursor.fetchall()

# 如果没有设置自动提交事务,则这里需要手动提交一次
conn.commit()

# 关闭游标和数据库连接
cursor.close()
conn.close()
# 常用数据库操作语句:
# 注:MySQLdb默认查询结果都是返回tuple
desc = cursor.description     # 获取表名信息
result = cursor.fetchone()    # 查询一条记录
results = cursor.fetchmany(5) # 查询多条记录
results = cursor.fetchall()   # 查询所有记录
conn.commit()                 # 手动提交事务集
conn.rollback()               # 回滚当前游标的所有操作 
# MySQLdb一系列数据库相关操作
import MySQLdb
conn = MySQLdb.connect(host='127.0.0.1', port=3306,
                       user='root', passwd='root', db='test', charset='utf8')
cursor = conn.cursor()

# (1)创建数据库表操作
sql1="""create table test_01(
        user_name char(20) not null,
        ident char(20) not null,
        sex char(20),
        age int,
        income float)"""
cursor.excute(sql1)

# (2)数据库插入操作
sql2="""insert into test_01(user_name,ident,sex,age,income)     
        values('%s', '%s', '%c', '%d', '%d' )" % 
        ('mac','44444','男',12,2000))"""
try:
   cursor.execute(sql2)
   # 提交到数据库执行
   conn.commit()
except:
   # 发生错误时会滚
   conn.rollback()

# (3)数据库查询操作
sql3 = "select * from test_01 where income>'%d'" % (1000)
try:
   cursor.execute(sql3)
   results = cursor.fetchall()
   for row in results:
      user_name= row[0]
      ident= row[1]
      sex= row[2]
      age= row[3]
      income = row[4]
      print "user_naem=%s,ident=%s,sex=%s,age=%d,income=%d" % 
      (user_name, ident, sex, age, income )
except:
   print "Error: unable to fecth data"

cursor.close()
conn.close()

#(4)数据库更新、删除操作
# 只需将需要执行的sql放入cursor.execute(sql)中即可

(2)PyMySQL

# 导入模块
import pymysql
# 链接MySQL数据库
def testMysql1():
    conn = pymysql.connect(host='127.0.0.1', port=3306,
                           user='root', passwd='root', db='test', charset='utf8')
    cursor = conn.cursor()
    cursor.execute("select * from user")
    result1 = cursor.fetchone() # result2 = cursor.fetchall()
    print(result1[0])
    cursor.close()
    conn.close() 
# 数据库操作语句与MySQLdb基本一致

二、Python链接Oracle数据库

# 导入模块
import cx_Oracle
# 数据库连接函数
def testOracle():  
    # python安装的是多少位oracle客户端(instantclient_11_2)就是多少位  
    # conn = cx_Oracle.connect('用户名/密码@数据库ip:端口号/数据库名')  
    conn = cx_Oracle.connect('root/[email protected]:1521/testDB')  
    cursor = conn.cursor()  
    cursor.execute('select sysdate from dual')  
    result = cursor.fetchone()  
    print('Database time:%s' % result) 
    cursor.close()  
    conn.close()

# 封装起来
import cx_Oracle 
# 读取需要执行的sql,返回执行函数
def oraclesql(cursor):
    fp = open(r'/home/oracle/scripts/tablespace.sql')
    fp_sql = fp.read()
    cursor.execute(fp_sql)
    data = cursor.fetchall()
    return data

if __name__ == '__main__':
    ipaddr = "192.168.223.138"
    username = "system"
    password = "redhat"
    oracle_port = "1521"
    oracle_service = "oracle.test"
    try:
        conn = cx_Oracle.connect(username + "/" + password + "@" +
                            ipaddr + ":" + oracle_port + "/" + oracle_service)
      # 将异常捕捉,然后错误就是抛异常的具体内容
    except Exception as e:
        print(e)
    else:
        cursor = conn.cursor()
        data = oraclesql(cursor)
        for i in data:
            print(i)
        cursor.close()
        conn.close()

到此主要介绍了python连接mysql及oracle数据库的方法,简单的介绍了数据库基本的操作,后续如有相关内容将持续更新。

猜你喜欢

转载自blog.csdn.net/KEEP_GIONG/article/details/80151084