本文目录一览:
- python 怎么提供api接口
- 如何获取python模块的api
- Python中的API如何更好的理解
- Python数据库api(db-api)
- 如何通过python调用新浪微博的API
- 如何用python 快速做出一个api服务
python 怎么提供api接口
python有个etcd的库,可以网上搜下看下这个库的使用以及它开发的api接口, 不过之前go使用etcd的时候,是调用etcd本身的rest api,没有使用第三方的etcd的库 etcd的api文档github上有的,搜下这个coreos/etcd 你可以选择自己喜欢的方式
如何获取python模块的api
一:用C API为Python写C语言函数,以方便Python中调用 1. 首先实现一个特定原型的函数,用Python C API来实现的话,所有函数必须是这种原型。必须是类似这样的 PyObject *Fun(PyObject *self, PyObject *args)
self应该是在用类的时候才会用到
Python中的API如何更好的理解
比如你自己实现了一个好用的功能,你把它写成类,定义一些类的属性和方法。然后给别人用的时候,别人只需要知道你这个类有哪些关键的属性和方法,然后每个属性是什么意思以及调用这个方法能做什么事。别人直接拿来就用,不需要看你是怎么实现这个功能的,而你给他的每个方法的文档说明就是API文档了,这就是面向对象的思想吧。当然这只是类的API接口,还有通信类的网络接口等到。
Python数据库API(DB API)
虽然 Python 需要为操作不同的数据库使用不同的模块,但不同的数据库模块并非没有规律可循,因为它们基本都遵守 Python 制订的 DB API 协议,目前该协议的最新版本是 2.0,因此这些数据库模块有很多操作其实都是相同的。下面先介绍不同数据库模块之间的通用内容。
全局变量
Python 推荐支持 DB API 2.0 的数据库模块都应该提供如下 3 个全局变量:
apilevel
:该全局变量显示数据库模块的 API 版本号。对于支持 DB API 2.0 版本的数据库模块来说,该变量值通常就是 2.0。如果这个变量不存在,则可能该数据库模块暂时不支持 DB API 2.0。读者应该考虑选择使用支持该数据库的其他数据库模块。threadsafe
:该全局变量指定数据库模块的线程安全等级,该等级值为 0~3 ,其中 3 代表该模块完全是线程安全的;1 表示该模块具有部分线程安全性,线程可以共享该模块,但不能共享连接;0 则表示线程完全不能共享该模块。paramstyle
:该全局变量指定当 SQL 语句需要参数时,可以使用哪种风格的参数。该变量可能返回如下变量值:format
:表示在 SQL 语句中使用 Python 标准的格式化字符串代表参数。例如,在程序中需要参数的地方使用%s
,接下来程序即可为这些参数指定参数值。pyformat
:表示在 SQL 语句中使用扩展的格式代码代表参数。比如使用%(name)
,这样即可使用包含 key 为 name 的字典为该参数指定参数值。qmark
:表示在 SQL 语句中使用问号(?)代表参数。在 SQL 语句中有几个参数,全部用问号代替。numeric
:表示在 SQL 语句中使用数字占位符(:N)代表参数。例如:1 代表一个参数,:2 也表示一个参数,这些数字相当于参数名,因此它们不一定需要连续。named
:表示在 SQL 语句中使用命名占位符(:name)代表参数。例如 :name 代表一个参数,:age 也表示一个参数。 通过查阅这些全局变量,即可大致了解该数据库 API 模块的对外的编程风格,至于该模块内部的实现细节,完全由该模块实现者负责提供,通常不需要开发者关心。
数据库 API 的核心类
遵守 DB API 2.0 协议的数据库模块通常会提供一个 connect()
函数,该函数用于连接数据库,并返回数据库连接对象。
数据库连接对象通常会具有如下方法和属性:
cursor(factory=Cursor)
:打开游标。commit()
:提交事务。rollback()
:回滚事务。close()
:关闭数据库连接。isolation_level
:返回或设置数据库连接中事务的隔离级别。in_transaction
:判断当前是否处于事务中。 上面第一个方法可以返回一个游标对象,游标对象是 Python DB API 的核心对象,该对象主要用于执行各种 SQL 语句,包括 DDL、DML、select 查询语句等。使用游标执行不同的 SQL 语句返回不同的数据。 游标对象通常会具有如下方法和属性:execute(sql[, parameters])
:执行 SQL 语句。parameters 参数用于为 SQL 语句中的参数指定值。executemany(sql, seq_of_parameters)
:重复执行 SQL 语句。可以通过 seq_of_parameters 序列为 SQL 语句中的参数指定值,该序列有多少个元素,SQL 语句被执行多少次。executescript(sql_script)
:这不是 DB API 2.0 的标准方法。该方法可以直接执行包含多条 SQL 语句的 SQL 脚本。fetchone()
:获取查询结果集的下一行。如果没有下一行,则返回 None。fetchmany(size=cursor.arraysize)
:返回查询结果集的下 N 行组成的列表。如果没有更多的数据行,则返回空列表。fetchall()
:返回查询结果集的全部行组成的列表。close()
:关闭游标。rowcount
:该只读属性返回受 SQL 语句影响的行数。对于executemany()
方法,该方法所修改的记录条数也可通过该属性获取。lastrowid
:该只读属性可获取最后修改行的 rowid。arraysize
:用于设置或获取fetchmany()
默认获取的记录条数,该属性默认为 1。有些数据库模块没有该属性。description
:该只读属性可获取最后一次查询返回的所有列的信息。connection
:该只读属性返回创建游标的数据库连接对象。有些数据库模块没有该属性。 总结来看,Python 的 DB API 2.0 由一个connect()
开始,一共涉及数据库连接和游标两个核心 API。它们的分工如下:- 数据库连接:用于获取游标、控制事务。
- 游标:执行各种 SQL 语句。 掌握了上面这些 API 之后,接下来可以大致归纳出 Python DB API 2.0 的编程步骤。
操作数据库的基本流程
使用 Python DB API 2.0 操作数据库的基本流程如下:
- 调用
connect()
方法打开数据库连接,该方法返回数据库连接对象。 - 通过数据库连接对象打开游标。
- 使用游标执行 SQL 语句(包括 DDL、DML、select 查询语句等)。如果执行的是查询语句,则处理查询数据。
- 关闭游标。
- 关闭数据库连接。 下图显示了使用 Python DB API 2.0 操作数据库的基本流程。
如何通过python调用新浪微博的API
- 下载SDK 使用python调用API的话,首先要去下一个Python的SDK,sinaweibopy 连接地址在此: 可以使用pip很快的导入,github连接里的wiki也有入门的使用方法,很容易看懂。
- 理解新浪微博的授权机制 在调用API之前,首先要搞懂什么叫OAuth 2,即新浪微博的授权机制, 连接在此:
- 在新浪微博注册应用 每个人都可以通过新浪微博开发者平台注册自己的应用,我注册的是站内应用。注册后会为每个应用分配唯一的app key 和 app secret,这在上文提到的授权机制中需要用到,相当与每个应用的标示吧。 至此,我们可以尝试写代码调用新浪微博的API啦。
- 简单的调用API实例 参考了往上很多资料和文档,写了一个简单的调用过程。
# _*_ coding: utf-8 _*_
from weibo import APIClient
import webbrowser
APP_KEY = ''
APP_SECRET = ''
CALLBACK_URL = ''
# 这个是设置回调地址,必须与那个“高级信息”里的一致
client = APIClient(app_key=APP_KEY, app_secret=APP_SECRET, redirect_uri=CALLBACK_URL)
url = client.get_authorize_url()
# TODO: redirect to url
# print url
webbrowser.open_new(url)
# 获取URL参数code:
code = '2fc0b2f5d2985db832fa01fee6bd9316'
client = APIClient(app_key=APP_KEY, app_secret=APP_SECRET, redirect_uri=CALLBACK_URL)
r = client.request_access_token(code)
access_token = r.access_token # 新浪返回的token,类似abc123xyz456
expires_in = r.expires_in # token过期的UNIX时间:
# TODO: 在此可保存access token
client.set_access_token(access_token, expires_in)
print client.friendships.friends.bilateral.ids.get(uid = 12345678)
通过以上的代码,我实现了调用相互关注API的调用,即查找与某个id的用户相互关注的人的列表。 其中,APP_KEY和APP_SECRET就是前文中分配给每个应用的信息,回调地址在每个应用的高级信息中可以看到,需要自己设置,不过随便设置一下就好 比较恶心的是code的获取,我一开始看sinaweibopy的文档的时候也没弄懂是什么意思,如上面的代码所示,url得到的是一个授权的网址,我们通过
webbrowser.open_new(url)
这行代码打开浏览器跳转到授权的界面,然后观察所在界面的网址,会显示大概如下一样的格式: 看到了吗? 问号后面有一个code=……的一个东西,把等号后面的字符串拷贝下来赋给code就可以了,但是每次运行程序是code不是一成不变的,也就是说每次都要有这么一个手动获取的过程,我觉得很麻烦,以后自己再研究一下,实现自动获取code就好了。如果能有哪位大神告诉我,感激不尽~ 好了,得到正确的code之后就可以完成授权认证,也就可以调用微博的API啦,至于如何在Python下调用,我拷贝一下sinaweibopy上的介绍: 首先查看新浪微博API文档,例如:
- API:statuses/user_timeline
- 请求格式:GET
- 请求参数:
- source:string,采用OAuth授权方式不需要此参数,其他授权方式为必填参数,数值为应用的AppKey?
- access_token:string,采用OAuth授权方式为必填参数,其他授权方式不需要此参数,OAuth授权后获得。
- uid:int64,需要查询的用户ID。
- screen_name:string,需要查询的用户昵称。
- (其它可选参数略) 调用方法:将API的“/”变为“.”,根据请求格式是GET或POST,调用get ()或post()并传入关键字参数,但不包括source和access_token参数:
r = client.statuses.user_timeline.get(uid=123456)
for st in r.statuses:
print st.text
若为POST调用,则示例代码如下:
r = client.statuses.update.post(status=u'测试OAuth 2.0发微博')
若需要上传文件,传入file-like object参数,示例代码如下:
f = open('/Users/michael/test.png', 'rb')
r = client.statuses.upload.post(status=u'测试OAuth 2.0带图片发微博', pic=f)
f.close() # APIClient不会自动关闭文件,需要手动关闭
请注意:上传的文件必须是file-like object,不能是str,因为无法区分一个str是文件还是字段。可以通过StringIO把一个str包装成file-like object 希望我的回答对你有帮助,望采纳。
如何用python 快速做出一个api服务
python 轻量级的框架flask 可以让你在两分钟内,搭建出一个简单的 api接口服务 轻量级不代表功能简单,容易上手 它的优势是,模块化,易扩展,定制性强 比如:一个最简单api接口2 分钟搞定 加入你需要加入登录验证功能 加入页面跳转功能呢 如果想要渲染加载前段页面呢 flask框里有你意想不到的插件,让你完成最够强大 的功能,怎么样,赶紧来试试吧