python使用之数据库连接

python使用之数据库连接

连接到数据库

如hive的连接

 conn = hive.Connection(host=host,
 						port=post,
 						auth=auth, 
 						username=username, 					
 						database=database, 
 						password=password)

创建游标

cursor = conn.cursor()
cursor.execute("sql语句")

💡:游标是一个存储在mysql服务器上数据库查询,它不是一条select 语句,而是被语句检索出来的结果集。
好处:在存储了游标之后,应用程序可以根据需要滚动或浏览其中的数据。
主要用于:交互式应用,其中用户需要滚动屏幕上的数据,并对数据进行浏览或做出更改。
游标使用的步骤:
1、在能够使用游标前,必须声明(定义)它。这个过程实际上没有检索数据,他只是使用select 语句。
2、一旦声明后,必须打开游标以供使用。这个过程用前面定义的select 语句把数据实际检索出来
3、对于填有数据游标,根据需要取出(检索)各行。
4、在结束游标使用时,必须关闭游标
在声明游标后,可根据需要频繁地打开和关闭游标。在游标打开后,可根据需要频繁地执行取操作。

获取数据

data = cursor.fetchall(all)
columnDes = cursor.description
columnNames = [columnDes[i][0] for i in range(len(columnDes))]
df= pd.DataFrame([list(i) for i in data], columns=columnNames)

💡游标的使用:

fetchone()、fetchmany()和fetchall()

  • fetchone(): 获取一行数据,用于哪怕是读取一行数据内存都会比较吃力的时候,可以缓解内存压力但是效率最低
    • 查询出有多条数据时
      cursor.fetchone():将只取最上面的第一条结果,返回单个元组如(‘id’,‘name’),然后多次循环使用ursor.fetchone(),依次取得下一条结果,直到为空。
    • 查询只有一条数据时
      cursor.fetchone():将只返回一条结果,返回单个元组如(‘id’,‘name’)。
  • fetchmany(x): 获取x行数据,x为int类型,在fetchone()和fetchall()之间的内存压力和效率,灵活运用
  • fetchall(): 一次性读取所有数据,数据量比较少的时候用,虽然效率最高,但是数据量很大的话会卡死
    • 查询出有多条数据时
      cursor.fetchall() :将返回所有结果,返回二维元组,如((‘id’,‘name’),(‘id’,‘name’))
    • 查询只有一条数据时
      cursor.fetchall() :也将返回所有结果,返回二维元组,如((‘id’,‘name’),)

cursor.description()
通常,我们在使用cursor.execute()方法执行SQL查询后,可以用cursor.description来获取查询结果中每列的元数据信息。
cursor.description返回一个由元组组成的序列,每个元组描述一列的属性信息,其中包含以下属性:
1、name:列名
2、type_code:列数据类型
3、display_size:列数据在字符形式下的最大长度,如果不确定则为None
4、internal_size:列数据在内部存储时的字节数,如果不确定则为None
5、precision:列数值精度,如果不确定则为None
6、scale:小数位数,如果不确定则为None
7、null_ok:是否可空。

关闭连接

cursor.close()  # 关闭游标
conn.close()  # 关闭数据库连接
  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值