本文目录一览:

Python接入不同类型数据库的通用接口方法

日常数据管理工作中,需要处理存储在不同类型数据库系统的数据。对这些数据的管理,常见的是使用Navicat,DBeaver等管理工具。在对大量数据分析时,需要提取到Python/R中进行处理。下面 探索 Python调用MySQL,MongoDB,InfluxDB等多种类型数据库通用连接方法。实现方式是在Python中封装各类数据库接口包。

实现后的效果:1.安全。接口信息封装便于保密管理;2.复用。一次封装,永久复用;3.上手快。方便不熟悉python和数据调用的同学,只会简单的sql即可使用,省时省力。

下面以MySQL,MongoDB,InfluxDB为例定义接口方法,然后把它们封装成1个通用方法。

mysql_get(sql,db):

mongo_get(sql,db):

influx_get(sql,db):

可以看到,以上函数共同调用的参数为sql和db。我们再增加一个参数db_type,将构造一个通用的方法对以上数据库调用。

同理,其他类型的数据库也可以加入到这个通用框架中,包括但不限于各类关系型,键值型,时序型数据库。

去哪里找python的开源项目

GitHub是一个面向开源及私有软件项目的托管平台,因为只支持git 作为唯一的版本库格式进行托管,故名GitHub。作为开源代码库以及版本控制系统,Github拥有超过900万开发者用户。随着越来越多的应用程序转移到了云上,Github已经成为了管理软件开发以及发现已有代码的首选方法。在GitHub,用户可以十分轻易地找到海量的开源代码。

下面给大家介绍一些GitHub上25个开源项目:

(1)TensorFlow Models

如果你对机器学习和深度学习感兴趣,一定听说过TensorFlow。TensorFlow Models是一个开源存储库,可以找到许多与深度学习相关的库和模型。

(GitHub: )

(2)Keras

Keras是一个高级神经网络API,用Python编写,能够在TensorFlow,CNTK或Theano之上运行。旨在完成深度学习的快速开发(GitHub: )

(3)Flask

Flask 是一个微型的 Python 开发的 Web 框架,基于Werkzeug  WSGI工具箱和Jinja2 模板引擎,使用BSD授权。

(GitHub: )

(4)scikit-learn

scikit-learn是一个用于机器学习的Python模块,基于 NumPy、SciPy 和 matplotlib 构建。,并遵循 BSD 许可协议。

(GitHub: )

(5)Zulip

Zulip是一款功能强大的开源群聊应用程序,它结合了实时聊天的即时性和线程对话的生产力优势。Zulip作为一个开源项目,被许多世界500强企业,大型组织以及其他需要实时聊天系统的用户选择使用,该系统允许用户每天轻松处理数百或数千条消息。Zulip拥有超过300名贡献者,每月合并超过500次提交,也是规模最大,发展最快的开源群聊项目。

(GitHub: )

相关推荐:《Python入门教程》

(6)Django

Django 是 Python 编程语言驱动的一个开源模型-视图-控制器(MVC)风格的 Web 应用程序框架,旨在快速开发出清晰,实用的设计。使用 Django,我们在几分钟之内就可以创建高品质、易维护、数据库驱动的应用程序。

(GitHub: )

(7)Rebound

Rebound 是一个当你得到编译错误时即时获取 Stack Overflow 结果的命令行工具。 就用 rebound 命令执行你的文件。这对程序员来说方便了不少。

(GitHub: )

(8)Google Images Download

这是一个命令行python程序,用于搜索Google Images上的关键字/关键短语,并可选择将图像下载到您的计算机。你也可以从另一个python文件调用此脚本。

(GitHub: )

(9)YouTube-dl

youtube-dl 是基于 Python 的命令行媒体文件下载工具,完全开源免费跨平台。用户只需使用简单命令并提供在线视频的网页地址即可让程序自动进行嗅探、下载、合并、命名和清理,最终得到已经命名的完整视频文件。

(GitHub: htt ps://github.com/rg3/youtube-dl )

(10)System Design Primer

此repo是一个系统的资源集合,可帮助你了解如何大规模构建系统。

(GitHub: )

(11)Mask R-CNN

Mask R-CNN用于对象检测和分割。这是对Python 3,Keras和TensorFlow的Mask R-CNN实现。该模型为图像中对象的每个实例生成边界框和分割蒙版。它基于特Feature Pyramid Network(FPN)和 ResNet101 backbone。

(GitHub: )

(12)Face Recognition

Face Recognition 是一个基于 Python 的人脸识别库,使用十分简便。这还提供了一个简单的face_recognition命令行工具,可以让您从命令行对图像文件夹进行人脸识别!

(GitHub: )

(13)snallygaster

用于扫描HTTP服务器上的机密文件的工具。

(GitHub: )

(14)Ansible

Ansible是一个极其简单的IT自动化系统。它可用于配置管理,应用程序部署,云配置,支持远程任务执行和多节点发布 - 包括通过负载平衡器轻松实现零停机滚动更新等操作。

(GitHub: )

(15)Detectron

Detectron是Facebook AI 研究院开源的的软件系统,它实现了最先进的目标检测算法,包括Mask R-CNN。它是用Python编写的,由Caffe2深度学习框架提供支持。

(16)asciinema

终端会话记录器和asciinema.org的最佳搭档。

(GitHub: )

(17)HTTPie

HTTPie 是一个开源的命令行的 HTTP 工具包,其目标是使与Web服务的CLI交互尽可能人性化。它提供了一个简单的http命令,允许使用简单自然的语法发送任意HTTP请求,并显示彩色输出。HTTPie可用于测试,调试以及通常与HTTP服务器交互。

(GitHub: )

(18)You-Get

You-Get是一个小型命令行实用程序,用于从Web下载媒体内容(视频,音频,图像),支持国内外常用的视频网站。

(GitHub: )

(19)Sentry

Sentry从根本上讲是一项服务,可以帮助用户实时监控和修复崩溃。基于Django构建,它包含一个完整的API,用于从任何语言、任何应用程序中发送事件。

(GitHub: )

(20)Tornado

Tornado是使用Python开发的全栈式(full-stack)Web框架和异步网络库,,最初是由FriendFeed上开发的。通过使用非阻塞网络I / O,Tornado可以扩展到数万个开放连接,是long polling、WebSockets和其他需要为用户维护长连接应用的理想选择。

(GitHub: )

(21)Magenta

Magenta是一个探索机器学习在创造艺术和音乐过程中的作用的研究项目。这主要涉及开发新的深度学习和强化学习算法,用于生成歌曲,图像,绘图等。但它也是构建智能工具和界面的探索,它允许艺术家和音乐家使用这些模型。

(GitHub: )

(22)ZeroNet

ZeroNet是一个利用比特币的加密算法和BitTorrent技术提供的不受审查的网络,完全开源。

(GitHub: )

(23)Gym

OpenAI Gym是一个用于开发和比较强化学习算法的工具包。这是Gym的开源库,可让让你访问标准化的环境。

(GitHub: )

(24)Pandas

Pandas是一个Python包,提供快速,灵活和富有表现力的数据结构,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。此外,它还有更广泛的目标,即成为所有语言中最强大,最灵活的开源数据分析/操作工具。它目前已经朝着这个目标迈进。

(GitHub: )

(25)Luigi

Luigi 是一个 Python 模块,可以帮你构建复杂的批量作业管道。处理依赖决议、工作流管理、可视化展示等等,内建 Hadoop 支持。(GitHub: )

openai能当爬虫使吗

你好,可以的,Spinning Up是OpenAI开源的面向初学者的深度强化学习资料,其中列出了105篇深度强化学习领域非常经典的文章, 见 Spinning Up:

博主使用Python爬虫自动爬取了所有文章,而且爬下来的文章也按照网页的分类自动分类好。

见下载资源:Spinning Up Key Papers

源码如下:

import os

import time

import urllib.request as url_re

import requests as rq

from bs4 import BeautifulSoup as bf

'''Automatically download all the key papers recommended by OpenAI Spinning Up.

See more info on:

Dependency:

bs4, lxml

'''

headers = {

'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36'

}

spinningup_url = ''

paper_id = 1

def download_pdf(pdf_url, pdf_path):

"""Automatically download PDF file from Internet

Args:

pdf_url (str): url of the PDF file to be downloaded

pdf_path (str): save routine of the downloaded PDF file

"""

if os.path.exists(pdf_path): return

try:

with url_re.urlopen(pdf_url) as url:

pdf_data = url.read()

with open(pdf_path, "wb") as f:

f.write(pdf_data)

Python调用openai(python调用openGPT)

except: # fix link at [102]

pdf_url = r""

with url_re.urlopen(pdf_url) as url:

pdf_data = url.read()

with open(pdf_path, "wb") as f:

f.write(pdf_data)

time.sleep(10) # sleep 10 seconds to download next

def download_from_bs4(papers, category_path):

"""Download papers from Spinning Up

Args:

papers (bs4.element.ResultSet): 'a' tags with paper link

category_path (str): root dir of the paper to be downloaded

"""

global paper_id

print("Start to ownload papers from catagory {}...".format(category_path))

for paper in papers:

paper_link = paper['href']

if not paper_link.endswith('.pdf'):

if paper_link[8:13] == 'arxiv':

# paper_link = ""

paper_link = paper_link[:18] + 'pdf' + paper_link[21:] + '.pdf' # arxiv link

elif paper_link[8:18] == 'openreview': # openreview link

# paper_link = ""

paper_link = paper_link[:23] + 'pdf' + paper_link[28:]

elif paper_link[14:18] == 'nips': # neurips link

paper_link = ""

else: continue

paper_name = '[{}] '.format(paper_id) + paper.string + '.pdf'

if ':' in paper_name:

paper_name = paper_name.replace(':', '_')

if '?' in paper_name:

paper_name = paper_name.replace('?', '')

paper_path = os.path.join(category_path, paper_name)

download_pdf(paper_link, paper_path)

print("Successfully downloaded {}!".format(paper_name))

paper_id += 1

print("Successfully downloaded all the papers from catagory {}!".format(category_path))

def _save_html(html_url, html_path):

"""Save requested HTML files

Args:

html_url (str): url of the HTML page to be saved

html_path (str): save path of HTML file

"""

html_file = rq.get(html_url, headers=headers)

with open(html_path, "w", encoding='utf-8') as h:

h.write(html_file.text)

def download_key_papers(root_dir):

"""Download all the key papers, consistent with the categories listed on the website

Args:

root_dir (str): save path of all the downloaded papers

"""

# 1. Get the html of Spinning Up

spinningup_html = rq.get(spinningup_url, headers=headers)

# 2. Parse the html and get the main category ids

soup = bf(spinningup_html.content, 'lxml')

# _save_html(spinningup_url, 'spinningup.html')

# spinningup_file = open('spinningup.html', 'r', encoding="UTF-8")

# spinningup_handle = spinningup_file.read()

# soup = bf(spinningup_handle, features='lxml')

category_ids = []

categories = soup.find(name='div', attrs={'class': 'section', 'id': 'key-papers-in-deep-rl'}).\

find_all(name='div', attrs={'class': 'section'}, recursive=False)

for category in categories:

category_ids.append(category['id'])

# 3. Get all the categories and make corresponding dirs

category_dirs = []

if not os.path.exitis(root_dir):

os.makedirs(root_dir)

for category in soup.find_all(name='h2'):

category_name = list(category.children)[0].string

if ':' in category_name: # replace ':' with '_' to get valid dir name

category_name = category_name.replace(':', '_')

category_path = os.path.join(root_dir, category_name)

category_dirs.append(category_path)

if not os.path.exists(category_path):

os.makedirs(category_path)

# 4. Start to download all the papers

print("Start to download key papers...")

for i in range(len(category_ids)):

category_path = category_dirs[i]

category_id = category_ids[i]

content = soup.find(name='div', attrs={'class': 'section', 'id': category_id})

inner_categories = content.find_all('div')

if inner_categories != []:

for category in inner_categories:

category_id = category['id']

inner_category = category.h3.text[:-1]

inner_category_path = os.path.join(category_path, inner_category)

if not os.path.exists(inner_category_path):

os.makedirs(inner_category_path)

content = soup.find(name='div', attrs={'class': 'section', 'id': category_id})

papers = content.find_all(name='a',attrs={'class': 'reference external'})

download_from_bs4(papers, inner_category_path)

else:

papers = content.find_all(name='a',attrs={'class': 'reference external'})

download_from_bs4(papers, category_path)

print("Download Complete!")

if __name__ == "__main__":

root_dir = "key-papers"

download_key_papers(root_dir)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

python怎么调用api接口

调用windows API的方式其实有两种,第一种是通过第三方模块pywin32。

如果小伙伴安装了pip,可以通过pip安装pywin32

在命令行中运行pip pst查看是否安装了pywin32

如图

我们这里调用一个windows最基本的API,MessageBox,该接口可以显示一个对话框。

这里小编就不过多介绍了,只简单的描述MessageBox接口,MessageBox是windows的一个API接口,作用是显示一个对话框。

原型为:

int WINAPI MessageBox(HWND hWnd,LPCTSTR lpText,LPCTSTR lpCaption,UINT uType);

第一个参数hWnd,指明了该对话框属于哪个窗口,lpText为窗口提示信息,lpCaption则为窗口标题,uType则是定义对话框的按钮和图标。

这里我们需要导入win32api这个模块(隶属于pywin32),如果需要宏定义的,API的宏被定义在win32con(同隶属于pywin32)模块内。

这里我们只导入一个win32api模块,然后简单的调用MessageBox显示一个对话框即可。

如果我们不会安装pywin32模块,或者说不想安装这个三方模块。这时我们还有一个办法。

调用python内置模块ctypes,如果小伙伴有windows编程基础的话,或者看过一点MSDN的话,都该知道,Windows的API其实是以dll文件(动态链接库)方式存在的。

+和|效果是相同的

更多Python相关技术文章,请访问Python教程栏目进行学习!以上就是小编分享的关于python怎么调用api接口的详细内容希望对大家有所帮助,更多有关python教程请关注环球青藤其它相关文章!