python连接SQLserver, oracle,redshift, mySQL四种数据库读取表格及列名的方法总结

本文介绍了如何使用Python连接SQL Server、Oracle、Redshift和MySQL等不同类型的数据库,并获取数据的方法。针对每种数据库提供了详细的代码示例,展示了如何建立连接、执行查询及处理结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简单介绍

本人是刚刚学习Python小白,因为工作关系,接触到几种不同类型的数据库。这是连接四种不同数据库并获取数据的方法总结。如有不足之处,望高手指点。

SQL server

package: pymssql

import pymssql
#建立连接
conn = pymssql.connect('server','username','password','DB')
#创建cursor
cursor = conn.cursor()
#执行查询,传入参数
cursor.execute(sql % (parameter))
#获取并存下数据
y = cursor.fetchall()
y = pd.DataFrame(y)
#获取列名,如果查询结果为空时,下面的语句会报警,所以加了这么个if.
if len(x) != 0:
	x.columns = [i[0] for i in cursor.description]
#关闭cursor和连接
cursor.close()
conn.close()

Oracle

package: cx_Oracle

import cx_Oracle
#创建连接
conn = cx_Oracle.connect('user', 'password',
                             cx_Oracle.makedsn("server", "port", 'servername'))
#创建cursor
cursor = conn.cursor()
#执行查询,传入参数
cursor.execute(sql % (parameter))
#获取并存下数据
y = cursor.fetchall()
y = pd.DataFrame(y)
#获取列名:如果查询结果为空时,下面的语句会报警,所以加了这么个if.
if len(x) != 0:
	x.columns = [i[0] for i in cursor.description]
#关闭cursor和连接
cursor.close()
conn.close()

Redshift

package: psycopg2

import psycopg2
#建立连接
conn = psycopg2.connect("dbname=??? host=??? \
         port=???? user=??? password=???)
cursor = conn.cursor()
cursor.execute(sql % (parameter))
data = cursor.fetchall()
x=pd.DataFrame(data)
if len(x) != 0:
    x.columns = [i[0] for i in cursor.description]
else:
    print('no data from Redshift')
cursor.close()
conn.close()

mySQL

package: pymysql

conn = pymysql.connect(host = ???,
                           port = ???,
                           user = ???,
                           passwd =???,
                           db =???,
                           cursorclass=pymysql.cursors.DictCursor
                           )
cursor = conn.cursor()
cursor.execute(sql % (parameter) )
x = cursor.fetchall()
x = pd.DataFrame(x)
cursor.close()
conn.close()
return x

总结

oracle, SQL server,和 redshift 建立连接的时候大同小异,获取数据和列名的时候,使用的方法都是一样的。

但是mysql是个奇葩,用原来的获取方式,拿到的是个tuple. 所以再创建要定义这个cursor类型。

cursorclass=pymysql.cursors.DictCursor

然后拿到的数据就是带列名的,神奇呀。

pandas 有一个read_sql也挺好用,也包括列名,但是传参数我还没有尝试过怎么用。下次再练习一下下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值