py data api是aws aurora serverless数据api的用户友好客户端
pydataapi的Python项目详细描述
py data api-用于python的数据api客户端
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