首页 > 数据库 >pyhdb库操作hana数据库

pyhdb库操作hana数据库

时间:2023-06-02 16:33:59浏览次数:54  
标签:cursor execute hana 游标 pyhdb sql 数据库

python pyhdb库操作hana数据库

参考文档

1 安装

$ pip install pyhdb

2 快速上手

如果您无法访问SAP HANA服务器,请访问SAP HANA开发中心并选择其中一个选项来获得您自己的试用SAP HANA服务器。

要在hada实例中使用PyHDB,请遵循以下指南。

pyhdb的基本用法对于实现DBAPI 2.0接口(PEP 249)的数据库适配器是通用的。下面的示例显示了使用pyhdb模块是多么容易。

import pyhdb

# 建立连接对象
connection = pyhdb.connect(
    host="example.com",
    port=30015,
    user="user",
    password="secret"
)

# 通过连接对象获取游标对象
cursor = connection.cursor()
# 执行sql
cursor.execute("SELECT 'Hello Python World' FROM DUMMY")
# 获取一条数据
cursor.fetchone()
# (u"Hello Python World",)

# 关闭连接对象
connection.close()
  • 建立数据库连接-connect

    pyhdb中函数connect创建一个新的数据库会话并返回一个新的Connection实例。

    请注意,端口不是您SAP HANA数据库的实例号。SAP HANA的SQL端口由315组成,例如默认实例号00的端口为30015。

    pyhdb目前只支持用户和密码认证方式。

  • 游标对象-cursor
    使用Connection对象的方法cursor创建一个新的cursor对象。该对象能够执行SQL语句,并从数据库中获取结果集的一行或多行。

    # 通过连接对象获取游标对象
    cursor = connection.cursor()
    
    # 执行sql 查询 模式和表名
    cursor.execute("SELECT SCHEMA_NAME, TABLE_NAME FROM TABLES")
    
    # 通过游标 从结果集中获取一条数据
    cursor.fetchone()  # ('SYS', 'DUMMY')
    
    # 通过游标 从结果集中获取指定条数
    cursor.fetchmany(3)  # 获取3条数据
    >> [('SYS', 'DUMMY'), ('SYS', 'PROCEDURE_DATAFLOWS'), ('SYS', 'PROCEDURE_MAPPING')]
    
    # 通过游标 从结果集中获取所有数据
    cursor.fetchall()
    

3 操作数据库

执行sql使用execute方法,该方法执行一句sql;如果要执行多条sql,使用executemany方法。

pramas = ['110', '1', 'abcd', 'hello world']
sql = """replace "SAPHANADB"."ZIMAGE" (MANDT,ID,FILENAME,VALUE) values (:1,:2,:3,:4) WITH PRIMARY KEY;"""
# 执行一条数据
cursor.execute(sql, parameters=params)

# 执行多条数据时,使用executemany方法
pramas_list = [['110', '1', 'abcd', 'hello world'], ['120', '2', 'abcd', 'hello world']]
cursor.executemany(sql, parameters=pramas_list)

3.1 创建表

使用execute方法,您还可以执行DDL语句,如CREATE TABLE

cursor.execute('CREATE TABLE PYHDB_TEST("NAMES" VARCHAR (255) null)')

3.2 插入数据

可以使用INSERT INTODELETE之类的execute方法执行DML语句。游标属性rowcount包含受最后一条语句影响的行数。

# 插入数据
cursor.execute("INSERT INTO PYHDB_TEST VALUES('Hello Python World')")
# :1 :2 :3  传入的参数顺序
pramas = ['110', '1', 'abcd', 'hello world']
cursor.execute("""insert into "SAPHANADB"."ZIMAGE" (MANDT,ID,FILENAME,VALUE) values (:1,:2,:3,:4);""", parameters=params)
# 受影响的行数
cursor.rowcount  # 2

3.3 存在更新,不存在创建

可以使用replaceupsert之类的execute方法执行DML语句。游标属性rowcount包含受最后一条语句影响的行数。

# 存在更新,不存在创建
# :1 :2 :3  传入的参数顺序
pramas = ['110', '1', 'abcd', 'hello world']
sql = """replace "SAPHANADB"."ZIMAGE" (MANDT,ID,FILENAME,VALUE) values (:1,:2,:3,:4) WITH PRIMARY KEY;"""
# 执行一条数据 执行多条数据时,使用executemany方法
cursor.execute(sql, parameters=params)
# 受影响的行数
cursor.rowcount  # 1

3.4 LOBs

LOB可以通过插入或更新语句写入数据库,LOB数据以字符串或LOB实例的形式提供:

from pyhdb import NClob

...
nclob_data = 'hello world'
nclob = NClob(nclob_data)
cursor.execute('update mynclob set nclob_1=:1, nclob_2=:2 where id=:3', [nclob, nclob_data, myid])

目前,lob只能在数据库中写入128k(一个更新或插入语句中提供的全部数据量)以内的大小。这个约束将在PyHDB的下一个版本中被移除。但是,当从数据库读取LOB数据时,此限制不适用。

标签:cursor,execute,hana,游标,pyhdb,sql,数据库
From: https://www.cnblogs.com/itelephant/p/17452180.html

相关文章

  • 001 数据库学习笔记
    数据库:文件和文件组组成。数据库文件==》1.主要数据文件:存放数据和数据库的初始化信息;每个数据库有且只能有一个;.mdf扩展名;2.次要数据文件:存放除了主要数据文件以为的所有数据文件;次要数据文件不是必须的,可以没有;可以是一个或多个;.ndf扩展名;3.事务日志文件:存放用于恢复数据......
  • 二十四史中国历史中国正史ACCESS\EXCEL数据库
    普通人对中国历史的兴趣一般都是电视剧里的野史秘闻,可以用《近8万条中国历史野史秘闻ACCESS数据库》,而对于需要谨严学习的,莫过于中国正史也就是所谓的二十四史,二十四史的数据其实找了有一段时间,网络上流行的一般都是一史一个txt文件,并不利于产品开发,整理起来也挺烦人的。而今天破......
  • 2万多条初中历史题库ACCESS\EXCEL数据库
    这段时间破解了中高学生知识题库,包含高中英语题库、小学英语题库、初中地理题库、初中历史题库、高中历史题库、初中生物题库,数据表结构都一样,今天发的这份是上万条的初中历史题库,截图包含所有字段,截图下方有显示共有记录数。参考项有:步入近代(1484)、国家的产生和社会的变革(12......
  • 使用HHDBCS的SSH通道登陆数据库
    传统远程登录或文件传输方式,例如Telnet、FTP,使用明文传输数据,存在很多的安全隐患。随着人们对网络安全的重视,SSH协议已经越来越被用户所青睐。SSH协议通过对网络数据进行加密和验证,在不安全的网络环境中提供了安全的登录和其他安全网络服务。因此HHDBCS提供了SSH通道的登陆方式......
  • 4万6千多高中作文大全ACCESS数据库
    作文类的数据库虽然已经有很多,有近万条的,也有2万条的,但今天弄到了小学、中学、高中一个系列的数据,而且最主要的是数据的记录数很多。这份高中作文包含46169条记录,分类也很好。grade字段统计:高一(14062)、高二(13375)、高三(17381)、高考(1351)。type字段统计:散文诗歌(8982)、叙事(8955)、议......
  • MySQL 数据库巡检,DBA应该怎么做?
    一套正常运行的系统是一个复杂的系统工程,牵涉到主机、操作系统、网络、数据库、中间件、底层存储,还有系统的核心:应用。任何层面的故障都可能造成系统的不可用。今天聊一聊数据库层面的巡检问题。数据库巡检的目的:保障数据库的正常运行,保证数据的安全性,完整性、可靠性。这篇文章......
  • SQLite数据库简单小入门学习(一)
    目录一、认识数据库(一)数据库简介(二)数据库类型二、SQLite数据库(一)SQLite简介(二)学习所需工具(1)scott.db(2)SQLiteSpy.exe(三)SQL语言SQL语言分类1.简单查询2.限定查询(1)关系运算(2)取值范围运算(3)基数范围运算(4)模糊查询(5)空判断(6)逻辑运算这是我在学习SQLite时的笔记,主要是一些比......
  • Mysql:优化数据库结构
    冷热拆分表本同一张表的数据,有些字段用得多,有些用些用得少。在数据量大的情况下,可以将热数据单独一张,冷数据单独一张。典型的是用户基础信息表和用户详细信息表增加冗余字段学生表关联课程表,需要展示课程的简介和名称。可以考虑把这两个字段冗余到学生表里增加非空约束在业务......
  • 包含58个分类的6万多古诗词典ACCESS\EXCEL数据库
    这个数据库中不但包含了常规的朝代、作者、教材分类之外,还有诗集和分类字段。诗集检索可以让用户选择喜欢的诗集开始诵读。类型检索是指按诗歌的题材检索,如果你在写作时想引用诗句,类型检索会效率很多。朝代有:先秦、两汉、魏晋、南北朝、隋代、唐代、五代、宋代、金朝、元代、明......
  • SequoiaDB分布式数据库2023.5月刊
    本月看点速览行业认可,荣登中国最佳信创厂商系列榜单聚焦创新,入选2022年大湾区科创企业创新TOP10科技为本,协同发展,多家组织机构到访青杉计划2023已开启,一起攀登更高的“杉” 行业认可,荣登中国最佳信创厂商系列榜单近日,由第一新声联合天眼查发起的2023年中国最佳信创厂......