py data api是aws aurora serverless数据api的用户友好客户端

pydataapi的Python项目详细描述


py data api-用于python的数据api客户端

Build StatusPyPI versioncodecov

py data api是一个用户友好的客户端,它支持sqlalchemy模型。

什么是aws aurora serverless的数据api?

https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/data-api.html

这个项目是一个实验阶段。

警告:某些接口将被更改。

如何安装

PyDataAPI需要Python3.6.1或更高版本

$ pip install pydataapi

示例

fromtypingimportListfromsqlalchemyimportColumn,Integer,Stringfromsqlalchemy.ext.declarativeimportdeclarative_basefromsqlalchemy.ormimportQueryfromsqlalchemy.sqlimportInsertfrompydataapiimportDataAPI,transactionclassUsers(declarative_base()):__tablename__='users'id=Column(Integer,primary_key=True,autoincrement=True)name=Column(String(255,collation='utf8_unicode_ci'),default=None)database:str='test'resource_arn:str='arn:aws:rds:us-east-1:123456789012:cluster:serverless-test-1'secret_arn:str='arn:aws:secretsmanager:us-east-1:123456789012:secret:serverless-test1'@transaction(database=database,resource_arn=resource_arn,secret_arn=secret_arn)defadd_users(data_api:DataAPI,user_names:List[str])->None:# start transactionforuser_nameinuser_names:data_api.execute(Insert(Users,{'name':user_name}))# some logic ...# commitdefexample_simple_execute():data_api=DataAPI(resource_arn,secret_arn,database=database)result=data_api.execute('show tables')print(result)# [[Persons, Users, Pets]]defexample_decorator():user_names:List[str]=['ken','rei','lisa','taro']add_users(user_names)defexample_with_statement():withDataAPI(database=database,resource_arn=resource_arn,secret_arn=secret_arn)asdata_api:# start transactioninsert:Insert=Insert(Users,{'name':'ken'})# INSERT INTO users (name) VALUES ('ken')result=data_api.execute(insert)print(result)# [Result(generated_fields=None, number_of_records_updated=1)]query=Query(Users).filter(Users.id==1)result=data_api.execute(query)# SELECT users.id, users.name FROM users WHERE users.id = 1print(result)# [[1, 'ken']]result=data_api.execute('select * from users',with_columns=True)print(result)# [{'id': 1, 'name': 'ken'}]# batch insertinsert:Insert=Insert(Users)data_api.execute(insert,[{'id':2,'name':'rei'},{'id':3,'name':'lisa'},{'id':4,'name':'taro'},])result=data_api.execute('select * from users')print(result)# [[1, 'ken'], [2, 'rei'], [3, 'lisa'], [4, 'taro']]# commitdefexample_rollback():withDataAPI(resource_arn,secret_arn)asdata_api:data_api.execute(Insert(Users,{'name':'ken'}))# you can rollback by ExceptionraiseExceptiondefexample_rollback_with_custom_exception():classOriginalError(Exception):passwithDataAPI(resource_arn,secret_arn,rollback_exception=OriginalError)asdata_api:data_api.execute(Insert(Users,{'name':'ken'}))# some logic ...# rollback when happen `rollback_exception`raiseOriginalError# rollback# raise Exception <- DataAPI don't rollback

功能

实施

  • BeginTransaction-核心
  • CommitTransaction-核心
  • ExecuteStatement-核心
  • RollbackTransaction-核心
  • BatchExecuteStatement-核心

未实施

  • ExecuteSql(Deprecated API)

待办事项

  • 添加文档包括文档字符串
  • 添加简单的函数客户端

相关项目

本地数据api

用于本地的DataAPI服务器

https://github.com/koxudaxi/local-data-api

PYPI

https://pypi.org/project/pydataapi

源代码

https://github.com/koxudaxi/py-data-api

文档

https://koxudaxi.github.io/py-data-api

许可证

py data api是在mit许可下发布的。http://www.opensource.org/licenses/mit-license

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何从同步请求中获取响应代码   具有深度复制的类中的Java oop getter/setter   java LDAP“简单”用户身份验证(JNDI Tomcat)不稳定?   java将Jenkins jnlp代理设置为通过API以编程方式使用WebSocket   java如何获取在servlet筛选器的静态块中启动的静态类的实例?   前两个数字的java charAt循环不能循环它   java在Spring引导执行器中是否有检查子服务运行状况的标准方法?   java我可以将jacksonmapped@JsonProperties推到“顶层”吗?   json JAVA:opencsv随机读取CSV单元格   无第三方应用程序的java捆绑包JRE   使用openidConnectClient功能的WAS Liberty中出现java无效cookie标头错误   java如何在Restful Web服务中从Http Post获取数组?   java如何读取安卓开发的JSON url?   如何在java IO中打开包含汉字的文件?