本人是刚刚学习Python小白,因为工作关系,接触到几种不同类型的数据库。这是连接四种不同数据库并获取数据的方法总结。如有不足之处,望高手指点。
package: pymssql
import pymssql
#建立连接
conn = t('server','username','password','DB')
#创建cursor
cursor = conn.cursor()
#执行查询,传入参数
ute(sql % (parameter))
#获取并存下数据
y = cursor.fetchall()
y = pd.DataFrame(y)
#获取列名,如果查询结果为空时,下面的语句会报警,所以加了这么个if.
if len(x) != lumns = [i[0] for i in cursor.description]
#关闭cursor和连接
cursor.close()
conn.close()
package: cx_Oracle
import cx_Oracle
#创建连接
conn = t('user', 'password',cx_Oracle.makedsn("server", "port", 'servername'))
#创建cursor
cursor = conn.cursor()
#执行查询,传入参数
ute(sql % (parameter))
#获取并存下数据
y = cursor.fetchall()
y = pd.DataFrame(y)
#获取列名:如果查询结果为空时,下面的语句会报警,所以加了这么个if.
if len(x) != lumns = [i[0] for i in cursor.description]
#关闭cursor和连接
cursor.close()
conn.close()
package: psycopg2
import psycopg2
#建立连接
conn = t("dbname=??? host=??? port=???? user=??? password=???)
cursor = conn.cursor()
ute(sql % (parameter))
data = cursor.fetchall()
x=pd.DataFrame(data)
if len(x) != lumns = [i[0] for i in cursor.description]
else:print('no data from Redshift')
cursor.close()
conn.close()
package: pymysql
conn = t(host = ???,port = ???,user = ???,passwd =???,db =???,cursorclass=pymysql.cursors.DictCursor)
cursor = conn.cursor()
ute(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也挺好用,也包括列名,但是传参数我还没有尝试过怎么用。下次再练习一下下。
本文发布于:2024-01-30 18:17:05,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170660983021908.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |