python开发数据库网站_怎么实现python写网页后台实现与数据库交互|python api开发实例...

如何使用Ansible 2.0 Python API

Ansible 和 SaltStack 都提供 Python 直接调用的API, 这方便了 Pythoner 对这些软件进行二次开发和整合, 此功能着便了不少, 比起 Python 代码中调用 shell 也专业!

然而 Ansible 在2.0版本后重构了大部分的代码逻辑, 启用了2.0版本之前的 Runner 和 Playbook 类, 使得广大同学之前的代码运行错误. 择日不如撞日, 今天中午对照 官方的文档 , 结合源代码, 对2.0版本之后的 Python API 做了下探究

Adhoc

adhoc 其实就是执行 Ansible 模块, 通过 adhoc 我们可以方便快捷的完成一些临时的运维操作.

2.0 之前的调用

import ansible.runner

import json

runner = ansible.runner.Runner(

module_name='ping', # 模块名

module_args='', # 模块参数

pattern='all', # 目标机器的pattern

forks=10

)

datastructure = runner.run()

data = json.dumps(datastructure,indent=4)

当然这里会去加载默认的 inventory

如果不想使用 inventory 文件或者想使用动态的 inventory, 则可以使用 host_list 参数代替

import ansible.runner

import json

runner = ansible.runner.Runner(

host_list=["10.10.0.1"], # 这里如果明确指定主机需要传递一个列表, 或者指定动态inventory脚本

module_name='ping', # 模块名

module_args='', # 模块参数

extra_vars={"ansible_ssh_user":"root","ansible_ssh_pass":"xx"},

forks=10

)

datastructure = runner.run()

data = json.dumps(datastructure,indent=4)

2.0 之后的调用

import json

from ansible.parsing.dataloader import DataLoader

from ansible.vars import VariableManager

from ansible.inventory import Inventory

from ansible.playbook.play import Play

from ansible.executor.task_queue_manager import TaskQueueManager

from ansible.executor.playbook_executor import PlaybookExecutor

loader = DataLoader() # 用来加载解析yaml文件或JSON内容,并且支持vault的解密

variable_manager = VariableManager() # 管理变量的类,包括主机,组,扩展等变量,之前版本是在 inventory 中的

inventory = Inventory(loader=loader, variable_manager=variable_manager)

variable_manager.set_inventory(inventory) # 根据 inventory 加载对应变量

class Options(object):

'''

这是一个公共的类,因为ad-hoc和playbook都需要一个options参数

并且所需要拥有不同的属性,但是大部分属性都可以返回None或False

因此用这样的一个类来省去初始化大一堆的空值的属性

'''

def __init__(self):

self.connection = "local"

self.forks = 1

self.check = False

def __getattr__(self, name):

return None

options = Options()

def run_adhoc():

variable_manager.extra_vars={"ansible_ssh_user":"root" , "ansible_ssh_pass":"xxx"} # 增加外部变量

# 构建pb, 这里很有意思, 新版本运行ad-hoc或playbook都需要构建这样的pb, 只是最后调用play的类不一样

# :param name: 任务名,类似playbook中tasks中的name

# :param hosts: playbook中的hosts

# :param tasks: playbook中的tasks, 其实这就是playbook的语法, 因为tasks的值是个列表,因此可以写入多个task

play_source = {"name":"Ansible Ad-Hoc","hosts":"10.10.0.1","gather_facts":"no","tasks":[{"action":{"module":"shell","args":"w"}}]}

play = Play().load(play_source, variable_manager=variable_manager, loader=loader)

tqm = None

try:

tqm = TaskQueueManager(

inventory=inventory,

variable_manager=variable_manager,

loader=loader,

options=options,

passwords=None,

stdout_callback='minimal',

run_tree=False,

)

result = tqm.run(play)

print result

finally:

if tqm is not None:

tqm.cleanup()

if __name__ == '__main__':

run_adhoc()

Playbook

playbook 则类似于 SaltStack 中的 state

2.0 之前的调用

from ansible import callbacks

from ansible import utils

from ansible.playbook import PlayBook

stats = callbacks.AggregateStats()

callback = callbacks.PlaybookCallbacks()

runner_callbacks = callbacks.PlaybookRunnerCallbacks(stats)

pb = ansible.playbook.PlayBook(

playbook="tasks.yml",

stats=stats,

callbacks=playbook_cb,

runner_callbacks=runner_cb,

check=True

)

pb.run()

2.0 之后的调用

import json

from ansible.parsing.dataloader import DataLoader

from ansible.vars import VariableManager

from ansible.inventory import Inventory

from ansible.playbook.play import Play

from ansible.executor.task_queue_manager import TaskQueueManager

from ansible.executor.playbook_executor import PlaybookExecutor

loader = DataLoader() # 用来加载解析yaml文件或JSON内容,并且支持vault的解密

variable_manager = VariableManager() # 管理变量的类,包括主机,组,扩展等变量,之前版本是在 inventory 中的

inventory = Inventory(loader=loader, variable_manager=variable_manager)

variable_manager.set_inventory(inventory) # 根据 inventory 加载对应变量

class Options(object):

'''

这是一个公共的类,因为ad-hoc和playbook都需要一个options参数

并且所需要拥有不同的属性,但是大部分属性都可以返回None或False

因此用这样的一个类来省去初始化大一堆的空值的属性

'''

def __init__(self):

self.connection = "local"

self.forks = 1

self.check = False

def __getattr__(self, name):

return None

options = Options()

def run_playbook():

playbooks=['task.yaml'] # 这里是一个列表, 因此可以运行多个playbook

variable_manager.extra_vars={"ansible_ssh_user":"root" , "ansible_ssh_pass":"xxx"} # 增加外部变量

pb = PlaybookExecutor(playbooks=playbooks, inventory=inventory, variable_manager=variable_manager, loader=loader, options=options, passwords=None)

result = pb.run()

print result

if __name__ == '__main__':

run_playbook()

求python中文api

地址http://www.pythondoc.com/pythontutorial3/index.html

如何使用ansible 2.0 python api

Ansible 和 SaltStack 都提供了 Python 直接调用的API, 这了 Pythoner 些软件进行二次开发和整, 此功能着实方便了不少, 比 Python 代码中调用 shell 也略显专业!

然而 Ansible 在2.0版本后重构了大部分的代码逻辑, 启用了2.0版本之前的 Runner 和 Playbook 类, 使得广大同学之前的代码运行错误. 择日不如撞日, 今天中午对照 官方的文档 , 结合源代码, 对2.0版本之后的 Python API 做了下探究

Adhoc

adhoc 其实就是执行 Ansible 模块, 通过 adhoc 我们可以方便快捷的完成一些临时的运维操作.

2.0 之前的调用

import ansible.runner

import json

runner = ansible.runner.Runner(

module_name='ping', # 模块名

module_args='', # 模块参数

pattern='all', # 目标机器的pattern

forks=10

)

datastructure = runner.run()

data = json.dumps(datastructure,indent=4)

当然这里会去加载默认的 inventory

如果不想使用 inventory 文件或者想使用动态的 inventory, 则可以使用 host_list 参数代替

import ansible.runner

import json

runner = ansible.runner.Runner(

host_list=["10.10.0.1"], # 这里如果明确指定主机需要传递一个列表, 或者指定动态inventory脚本

module_name='ping', # 模块名

module_args='', # 模块参数

extra_vars={"ansible_ssh_user":"root","ansible_ssh_pass":"xx"},

forks=10

)

datastructure = runner.run()

data = json.dumps(datastructure,indent=4)

2.0 之后的调用

import json

from ansible.parsing.dataloader import DataLoader

from ansible.vars import VariableManager

from ansible.inventory import Inventory

from ansible.playbook.play import Play

from ansible.executor.task_queue_manager import TaskQueueManager

from ansible.executor.playbook_executor import PlaybookExecutor

loader = DataLoader() # 用来加载解析yaml文件或JSON内容,并且支持vault的解密

variable_manager = VariableManager() # 管理变量的类,包括主机,组,扩展等变量,之前版本是在 inventory 中的

inventory = Inventory(loader=loader, variable_manager=variable_manager)

variable_manager.set_inventory(inventory) # 根据 inventory 加载对应变量

class Options(object):

'''

这是一个公共的类,因为ad-hoc和playbook都需要一个options参数

并且所需要拥有不同的属性,但是大部分属性都可以返回None或False

因此用这样的一个类来省去初始化大一堆的空值的属性

'''

def __init__(self):

self.connection = "local"

self.forks = 1

self.check = False

def __getattr__(self, name):

return None

options = Options()

def run_adhoc():

variable_manager.extra_vars={"ansible_ssh_user":"root" , "ansible_ssh_pass":"xxx"} # 增加外部变量

# 构建pb, 这里很有意思, 新版本运行ad-hoc或playbook都需要构建这样的pb, 只是最后调用play的类不一样

# :param name: 任务名,类似playbook中tasks中的name

# :param hosts: playbook中的hosts

# :param tasks: playbook中的tasks, 其实这就是playbook的语法, 因为tasks的值是个列表,因此可以写入多个task

play_source = {"name":"Ansible Ad-Hoc","hosts":"10.10.0.1","gather_facts":"no","tasks":[{"action":{"module":"shell","args":"w"}}]}

play = Play().load(play_source, variable_manager=variable_manager, loader=loader)

tqm = None

try:

tqm = TaskQueueManager(

inventory=inventory,

variable_manager=variable_manager,

loader=loader,

options=options,

passwords=None,

stdout_callback='minimal',

run_tree=False,

)

result = tqm.run(play)

print result

finally:

if tqm is not None:

tqm.cleanup()

if __name__ == '__main__':

run_adhoc()

Playbook

playbook 则类似于 SaltStack 中的 state

2.0 之前的调用

from ansible import callbacks

from ansible import utils

from ansible.playbook import PlayBook

stats = callbacks.AggregateStats()

callback = callbacks.PlaybookCallbacks()

runner_callbacks = callbacks.PlaybookRunnerCallbacks(stats)

pb = ansible.playbook.PlayBook(

playbook="tasks.yml",

stats=stats,

callbacks=playbook_cb,

runner_callbacks=runner_cb,

check=True

)

pb.run()

2.0 之后的调用

import json

from ansible.parsing.dataloader import DataLoader

from ansible.vars import VariableManager

from ansible.inventory import Inventory

from ansible.playbook.play import Play

from ansible.executor.task_queue_manager import TaskQueueManager

from ansible.executor.playbook_executor import PlaybookExecutor

loader = DataLoader() # 用来加载解析yaml文件或JSON内容,并且支持vault的解密

variable_manager = VariableManager() # 管理变量的类,包括主机,组,扩展等变量,之前版本是在 inventory 中的

inventory = Inventory(loader=loader, variable_manager=variable_manager)

variable_manager.set_inventory(inventory) # 根据 inventory 加载对应变量

class Options(object):

'''

这是一个公共的类,因为ad-hoc和playbook都需要一个options参数

并且所需要拥有不同的属性,但是大部分属性都可以返回None或False

因此用这样的一个类来省去初始化大一堆的空值的属性

'''

def __init__(self):

self.connection = "local"

self.forks = 1

self.check = False

def __getattr__(self, name):

return None

options = Options()

def run_playbook():

playbooks=['task.yaml'] # 这里是一个列表, 因此可以运行多个playbook

variable_manager.extra_vars={"ansible_ssh_user":"root" , "ansible_ssh_pass":"xxx"} # 增加外部变量

pb = PlaybookExecutor(playbooks=playbooks, inventory=inventory, variable_manager=variable_manager, loader=loader, options=options, passwords=None)

result = pb.run()

print result

if __name__ == '__main__':

run_playbook()

如何使用python 开发一个api

使用 Python 和 Flask 设计 RESTful API

近些 REST (REpresentational State Transfer) 已经变成了 web services 和 web APIs 的标

在本文中我将向你展示如何简单地使用 Python 和 Flask 框创建一个 RESTful 的 web service。

什么是 REST?

六条设计规范定义了一个 REST 系统的特点:

客户端-服务器: 客户端和服务器之间隔离,服务器提供服务,客户端进行消费。

无状态: 从客户端到服务器的每个请求都必须包含理解请求所必需的信息。换句话说, 服务器不会存储客户端上一次请求的信息用来给下一次使用。

可缓存: 服务器必须明示客户端请求能否缓存。

分层系统: 客户端和服务器之间的通信应该以一种标准的方式,就是中间层代替服务器做出响应的时候,客户端不需要做任何变动。

统一的接口: 服务器和客户端的通信方法必须是统一的。

按需编码: 服务器可以提供可执行代码或脚本,为客户端在它们的环境中执行。这个约束是唯一一个是可选的。

什么是一个 RESTful 的 web service?

REST 架构的最初目的是适应万维网的 HTTP 协议。

RESTful web services 概念的核心就是“资源”。 资源可以用 URI 来表示。客户端使用 HTTP 协议定义的方法来发送请求到这些 URIs,当然可能会导致这些被访问的”资源“状态的改变。

HTTP 标准的方法有如下:==========  =====================  ==================================

HTTP 方法   行为                   示例

==========  =====================  ==================================

GET         获取资源的信息         http://example.com/api/orders

GET         获取某个特定资源的信息 http://example.com/api/orders/123

POST        创建新资源             http://example.com/api/orders

PUT         更新资源               http://example.com/api/orders/123

DELETE      删除资源               http://example.com/api/orders/123

==========  ====================== ==================================

REST 设计不需要特定的数据格式。在请求中数据可以以 JSON 形式, 或者有时候作为 url 中查询参数项。

设计一个简单的 web service

坚持 REST 的准则设计一个 web service 或者 API 的任务就变成一个标识资源被展示出来以及它们是怎样受不同的请求方法影响的练习。

比如说,我们要编写一个待办事项应用程序而且我们想要为它设计一个 web service。要做的第一件事情就是决定用什么样的根 URL 来访问该服务。例如,我们可以通过这个来访问:

http://[hostname]/todo/api/v1.0/

在这里我已经决定在 URL 中包含应用的名称以及 API 的版本号。在 URL 中包含应用名称有助于提供一个命名空间以便区分同一系统上的其它服务。在 URL 中包含版本号能够帮助以后的更新,如果新版本中存在新的和潜在不兼容的功能,可以不影响依赖于较旧的功能的应用程序。

下一步骤就是选择将由该服务暴露(展示)的资源。这是一个十分简单地应用,我们只有任务,因此在我们待办事项中唯一的资源就是任务。

我们的任务资源将要使用 HTTP 方法如下:==========  ===============================================  =============================

HTTP 方法   URL                                              动作

==========  ===============================================  ==============================

GET         http://[hostname]/todo/api/v1.0/tasks            检索任务列表

GET         http://[hostname]/todo/api/v1.0/tasks/[task_id]  检索某个任务

POST        http://[hostname]/todo/api/v1.0/tasks            创建新任务

PUT         http://[hostname]/todo/api/v1.0/tasks/[task_id]  更新任务

DELETE      http://[hostname]/todo/api/v1.0/tasks/[task_id]  删除任务

==========  ================================================ =============================

我们定义的任务有如下一些属性:

id: 任务的唯一标识符。数字类型。

title: 简短的任务描述。字符串类型。

description: 具体的任务描述。文本类型。

done: 任务完成的状态。布尔值。

目前为止关于我们的 web service 的设计基本完成。剩下的事情就是实现它!

Flask 框架的简介

如果你读过 Flask Mega-Tutorial 系列,就会知道 Flask 是一个简单却十分强大的 Python web 框架。

在我们深入研究 web services 的细节之前,让我们回顾一下一个普通的 Flask Web 应用程序的结构。

我会首先假设你知道 Python 在你的平台上工作的基本知识。 我将讲解的例子是工作在一个类 Unix 操作系统。简而言之,这意味着它们能工作在 Linux,Mac OS X 和 Windows(如果你使用Cygwin)。 如果你使用 Windows 上原生的 Python 版本的话,命令会有所不同。

让我们开始在一个虚拟环境上安装 Flask。如果你的系统上没有 virtualenv,你可以从https://pypi.python.org/pypi/virtualenv 上下载:$ mkdir todo-api

$ cd todo-api

$ virtualenv flask

New python executable in flask/bin/python

Installing setuptools............................done.

Installing pip...................done.

$ flask/bin/pip install flask

既然已经安装了 Flask,现在开始创建一个简单地网页应用,我们把它放在一个叫 app.py 的文件中:#!flask/bin/pythonfrom flask import Flaskapp = Flask(__name__)@app.route('/')def index():

return "Hello, World!"if __name__ == '__main__':

app.run(debug=True)

为了运行这个程序我们必须执行 app.py:$ chmod a x app.py

$ ./app.py

* Running on http://127.0.0.1:5000/

* Restarting with reloader

现在你可以启动你的网页浏览器,输入 http://localhost:5000 看看这个小应用程序的效果。

简单吧?现在我们将这个应用程序转换成我们的 RESTful service!

使用 Python 和 Flask 实现 RESTful services

使用 Flask 构建 web services 是十分简单地,比我在 Mega-Tutorial 中构建的完整的服务端的应用程序要简单地多。

在 Flask 中有许多扩展来帮助我们构建 RESTful services,但是在我看来这个任务十分简单,没有必要使用 Flask 扩展。

我们 web service 的客户端需要添加、删除以及修改任务的服务,因此显然我们需要一种方式来存储任务。最直接的方式就是建立一个小型的数据库,但是数据库并不是本文的主体。学习在 Flask 中使用合适的数据库,我强烈建议阅读 Mega-Tutorial。

这里我们直接把任务列表存储在内存中,因此这些任务列表只会在 web 服务器运行中工作,在结束的时候就失效。 这种方式只是适用我们自己开发的 web 服务器,不适用于生产环境的 web 服务器, 这种情况一个合适的数据库的搭建是必须的。

我们现在来实现 web service 的第一个入口:#!flask/bin/pythonfrom flask import Flask, jsonifyapp = Flask(__name__)tasks = [

{

'id': 1,

'title': u'Buy groceries',

'description': u'Milk, Cheese, Pizza, Fruit, Tylenol',

'done': False

},

{

'id': 2,

'title': u'Learn Python',

'description': u'Need to find a good Python tutorial on the web',

'done': False

}]@app.route('/todo/api/v1.0/tasks', methods=['GET'])def get_tasks():

return jsonify({'tasks': tasks})if __name__ == '__main__':

app.run(debug=True)

正如你所见,没有多大的变化。我们创建一个任务的内存数据库,这里无非就是一个字典和数组。数组中的每一个元素都具有上述定义的任务的属性。

取代了首页,我们现在拥有一个 get_tasks 的函数,访问的 URI 为 /todo/api/v1.0/tasks,并且只允许 GET 的 HTTP 方法。

这个函数的响应不是文本,我们使用 JSON 数据格式来响应,Flask 的 jsonify 函数从我们的数据结构中生成。

使用网页浏览器来测试我们的 web service 不是一个最好的注意,因为网页浏览器上不能轻易地模拟所有的 HTTP 请求的方法。相反,我们会使用 curl。如果你还没有安装 curl 的话,请立即安装它。

通过执行 app.py,启动 web service。接着打开一个新的控制台窗口,运行以下命令:$ curl -i http://localhost:5000/todo/api/v1.0/tasks

HTTP/1.0 200 OK

Content-Type: application/json

Content-Length: 294

Server: Werkzeug/0.8.3 Python/2.7.3

Date: Mon, 20 May 2013 04:53:53 GMT

{

"tasks": [

{

"description": "Milk, Cheese, Pizza, Fruit, Tylenol",

"done": false,

"id": 1,

"title": "Buy groceries"

},

{

"description": "Need to find a good Python tutorial on the web",

"done": false,

"id": 2,

"title": "Learn Python"

}

]

}

我们已经成功地调用我们的 RESTful service 的一个函数!

现在我们开始编写 GET 方法请求我们的任务资源的第二个版本。这是一个用来返回单独一个任务的函数:from flask import abort@app.route('/todo/api/v1.0/tasks/', methods=['GET'])def get_task(task_id):

task = filter(lambda t: t['id'] == task_id, tasks)

if len(task) == 0:

abort(404)

return jsonify({'task': task[0]})

第二个函数有些意思。这里我们得到了 URL 中任务的 id,接着 Flask 把它转换成 函数中的 task_id 的参数。

我们用这个参数来搜索我们的任务数组。如果我们的数据库中不存在搜索的 id,我们将会返回一个类似 404 的错误,根据 HTTP 规范的意思是 “资源未找到”。

如果我们找到相应的任务,那么我们只需将它用 jsonify 打包成 JSON 格式并将其发送作为响应,就像我们以前那样处理整个任务集合。

调用 curl 请求的结果如下:$ curl -i http://localhost:5000/todo/api/v1.0/tasks/2

HTTP/1.0 200 OK

Content-Type: application/json

Content-Length: 151

Server: Werkzeug/0.8.3 Python/2.7.3

Date: Mon, 20 May 2013 05:21:50 GMT

{

"task": {

"description": "Need to find a good Python tutorial on the web",

"done": false,

"id": 2,

"title": "Learn Python"

}

}

$ curl -i http://localhost:5000/todo/api/v1.0/tasks/3

HTTP/1.0 404 NOT FOUND

Content-Type: text/html

Content-Length: 238

Server: Werkzeug/0.8.3 Python/2.7.3

Date: Mon, 20 May 2013 05:21:52 GMT

404 Not Found

Not Found

The requested URL was not found on the server.

If you     entered the URL manually please check your spelling and try again.

当我们请求 id #2 的资源时候,我们获取到了,但是当我们请求 #3 的时候返回了 404 错误。有关错误奇怪的是返回的是 HTML 信息而不是 JSON,这是因为 Flask 按照默认方式生成 404 响应。由于这是一个 Web service 客户端希望我们总是以 JSON 格式回应,所以我们需要改善我们的 404 错误处理程序:from flask import make_response@app.errorhandler(404)def not_found(error):

return make_response(jsonify({'error': 'Not found'}), 404)

我们会得到一个友好的错误提示:$ curl -i http://localhost:5000/todo/api/v1.0/tasks/3

HTTP/1.0 404 NOT FOUND

Content-Type: application/json

Content-Length: 26

Server: Werkzeug/0.8.3 Python/2.7.3

Date: Mon, 20 May 2013 05:36:54 GMT

{

"error": "Not found"

}

接下来就是 POST 方法,我们用来在我们的任务数据库中插入一个新的任务:from flask import request@app.route('/todo/api/v1.0/tasks', methods=['POST'])def create_task():

if not request.json or not 'title' in request.json:

abort(400)

task = {

'id': tasks[-1]['id'] 1,

'title': request.json['title'],

'description': request.json.get('description', ""),

'done': False

}

tasks.append(task)

return jsonify({'task': task}), 201

添加一个新的任务也是相当容易地。只有当请求以 JSON 格式形式,request.json 才会有请求的数据。如果没有数据,或者存在数据但是缺少 title 项,我们将会返回 400,这是表示请求无效。

接着我们会创建一个新的任务字典,使用最后一个任务的 id 1 作为该任务的 id。我们允许 description 字段缺失,并且假设 done 字段设置成 False。

我们把新的任务添加到我们的任务数组中,并且把新添加的任务和状态 201 响应给客户端。

使用如下的 curl 命令来测试这个新的函数:$ curl -i -H "Content-Type: application/json" -X POST -d '{"title":"Read a book"}' http://localhost:5000/todo/api/v1.0/tasks

HTTP/1.0 201 Created

Content-Type: application/json

Content-Length: 104

Server: Werkzeug/0.8.3 Python/2.7.3

Date: Mon, 20 May 2013 05:56:21 GMT

{

"task": {

"description": "",

"done": false,

"id": 3,

"title": "Read a book"

}

}

注意:如果你在 Windows 上并且运行 Cygwin 版本的 curl,上面的命令不会有任何问题。然而,如果你使用原生的 curl,命令会有些不同:curl -i -H "Content-Type: application/json" -X POST -d "{"""title""":"""Read a book"""}" http://localhost:5000/todo/api/v1.0/tasks

当然在完成这个请求后,我们可以得到任务的更新列表:$ curl -i http://localhost:5000/todo/api/v1.0/tasks

HTTP/1.0 200 OK

Content-Type: application/json

Content-Length: 423

Server: Werkzeug/0.8.3 Python/2.7.3

Date: Mon, 20 May 2013 05:57:44 GMT

{

"tasks": [

{

"description": "Milk, Cheese, Pizza, Fruit, Tylenol",

"done": false,

"id": 1,

"title": "Buy groceries"

},

{

"description": "Need to find a good Python tutorial on the web",

"done": false,

"id": 2,

"title": "Learn Python"

},

{

"description": "",

"done": false,

"id": 3,

"title": "Read a book"

}

]

}

剩下的两个函数如下所示:@app.route('/todo/api/v1.0/tasks/', methods=['PUT'])def update_task(task_id):

task = filter(lambda t: t['id'] == task_id, tasks)

if len(task) == 0:

abort(404)

if not request.json:

abort(400)

if 'title' in request.json and type(request.json['title']) != unicode:

abort(400)

if 'description' in request.json and type(request.json['description']) is not unicode:

abort(400)

如何使用python对数据库进行操作

你可以访问Python数据库接口及API查看详细的支持数据表。不数你需载不同的DB API模块,例如你需要访问Oracle数据库和Mysql数据,你需要下载Oracle和MySQL数据库模块。

DB-API 是一个规范. 它定义了一系列必须的对象和数据库存取方式, 以便为各种各样的底层数据库系统和多种多样的数据库接口程序提供一致的访问接口 。

Python的DB-API,为大多数的数据库实现了接口,使用它连接各数据库后,就可以用相同的方式操作各数据库。

Python DB-API使用流程:

引入 API 模块。

获取与数据库的连接。

执行SQL语句和存储过程。

关闭数据库连接。

什么是MySQLdb?

MySQLdb 是用于Python链接Mysql数据库的接口,它实现了 Python 数据库 API 规范 V2.0,基于 MySQL C API 上建立的。

如何安装MySQLdb?

为了用DB-API编写MySQL脚本,必须确保已经安装了MySQL。复制以下代码,并执行:

#!/usr/bin/python

# -*- coding: UTF-8 -*-

import MySQLdb

如果执行后的输出结果如下所示,意味着你没有安装 MySQLdb 模块:

Traceback (most recent call last):

File "test.py", line 3, in import MySQLdb

ImportError: No module named MySQLdb

如何使用python连接数据库,插入并查询数据

过类似的 可以下:http://blog.163.com/lucia_gagaga/blog/static/2647680192016829115638888/

怎么实现python写网页后台实现与数据库交互

flask是一个很简单,较优美的单python的WEB开发框架。 bootstrap是一个强工具箱,我没有用过,不时间(这个星期)我会尝试学一下。应该会有很好的体验。

flask教程在它的官网上就有,如果你熟悉python,10分钟就学会了。

连接mysql数据库建议你不要用什么orm, 直接通过mysqllib自己写sql语句,这样更简单。 当然如果你的SQL语句不熟悉,就要找几个例子,学习一下,几分钟就可以了。 python的DBAPI2.0框架很简单就是connect, startcursor,fetchone这几个主要命令。

sqlite3比mysql更简单,connect的时间加上文件名,其余的都和mysql的用法一样。

git管理就需要安装一套环境。在linux下,比如ubuntu,你只需要apt-get 安装就可以。使用方法有些类似CVS。

实现学生管理其实有更简单的办法。只需要安装一套DJANGO,花两天学习一下它的教程。一口气就建成了。直接使用它的admin模块,几乎不用开发就能用。

版权声明:本站所有文章皆为原创,欢迎转载或转发,请保留网站地址和作者信息。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值