Python连接数据库方法汇总
# 连接mysql
import pymysql
conn = pymysql.connect(host='ip',
port=端口,
user='用户名',
passwd='密码',
db='数据库名')
if conn:
print('OK')
cur = conn.cursor()
cur.execute("show tables;")
ret = cur.fetchone() #获取符合条件的第一个值的所有信息,返回结果类型为元组
print(ret)
cur.close()
conn.close()
# 连接sql_sever
import pymssql
conn = pymssql.connect(server='ip:端口',
user='用户名',password='密码',database='数据库名')
if conn:
print('ok')
cur = conn.cursor()
cur.execute('SELECT Name FROM SysObjects Where XType=\'U\' ORDER BY Name')
ret = cur.fetchall()
print(ret)
cur.close()
conn.close()
# 连接oracle
import cx_Oracle
# 两种方式(一)
conn = cx_Oracle.connect("用户名","密码",'ip:端口/服务名',encoding='UTF-8')
# eg:conn = cx_Oracle.connect("J***","12***",'31.0.***.**:****/ORCL',encoding='UTF-8')
# 两种方式(二),创建dsn
# # dsn=cx_Oracle.makedsn('ip',端口,'服务名')
# # conn = cx_Oracle.connect("用户名","密码",dsn,encoding='UTF-8')
# 连接oracle的时候,没有指定schema(可以理解为库名)
cur = conn.cursor()
# # cur.execute("select * from schema名.表名 WHERE ROWNUM<6") # 前6行的记录
cur.execute('select table_name from sys.dba_tables where owner=\'schema名\'') # 查询某schema下所有表名
ret = cur.fetchall() #获取符合条件的第一个值的所有信息,返回结果类型为元组
print(ret)
cur.close()
conn.close()
# 连接hive,这里使用的是从pyhive中导入presto
# Presto是一个分布式的查询引擎,本身并不存储数据,但是可以接入多种数据源,并且支持跨数据源的级联查询。(优势:Presto是一个低延迟高并发的内存计算引擎,相比Hive,执行效率要高很多)
# Presto使用Catalog、Schema和Table这3层结构来管理数据
# Catalog:就是数据源。Hive是数据源,Mysql也是数据源,Hive 和Mysql都是数据源类型,可以连接多个Hive和多个Mysql,每个连接都有一个名字。
# Schema:相当于一个数据库实例,一个Schema包含多张数据表。
# Table:数据表,与一般意义上的数据库表相同。
from pyhive import presto
conn = presto.connect(host='ip',port = 端口,catalog = 'hive',username='用户名',schema=库名)
if conn:
print('ok')
拿走记得点赞哦~