有时候需要操作数据库,为了能使用统一的接口访问,我们采用Python DB API,地址为

https://www.python.org/dev/peps/pep-0249/

全文参考---“疯狂的蚂蚁crazyant”

我使用的是mysql+pymysql+pycharm连接数据库,windows本地要安装mysql数据库

import pymysql

conn = pymysql.connect(
host = '127.0.0.1',
port = 3307,
user = 'root',
password = 'root',
db = 'songqin',
charset = 'utf8', )
#获取一个游标
cursor = conn.cursor()
print(conn) #<pymysql.connections.Connection object at 0x000001F42FD05898>
print(cursor) #<pymysql.cursors.Cursor object at 0x000001F4319B59E8> cursor.close()
conn.close()

  执行查询语句

import pymysql

conn = pymysql.connect(
host = '127.0.0.1',
port = 3307,
user = 'root',
password = 'root',
db = 'songqin',
charset = 'utf8', )
#获取一个游标
cursor = conn.cursor()
sql = 'select * from user'
cursor.execute(sql) print(cursor.rowcount) rs = cursor.fetchone()
print(rs) #(1, 'name1') rs = cursor.fetchmany(3)
print(rs) #((2, 'name2'), (3, 'name3'), (4, 'name4')) rs = cursor.fetchall()
print(rs) #((5, 'name5'), (6, 'name6'), (7, 'name7'), (8, 'name8'), (9, 'name9')) cursor.close()
conn.close()

执行查询

 import pymysql

 conn = pymysql.connect(
host = '127.0.0.1',
port = 3307,
user = 'root',
password = 'root',
db = 'songqin',
charset = 'utf8',
#cursorclass = pymysql.cursors.DictCursor
)
#获取一个游标
cursor = conn.cursor()
sql = 'select * from user'
cursor.execute(sql) rs = cursor.fetchall()
print(rs)
for i in rs:
#print('userid=%s,username=%s' % (i[0],i[1]))
print('userid=%s,username=%s' % i) cursor.close()
conn.close()

执行增删改

 import pymysql

 conn = pymysql.connect(
host = '127.0.0.1',
port = 3307,
user = 'root',
password = 'root',
db = 'songqin',
charset = 'utf8',
#cursorclass = pymysql.cursors.DictCursor
)
#获取一个游标
cursor = conn.cursor()
sql_insert = "insert into user(userid,username) values(10,'name10')"
sql_update = "update user set username='name91' where userid=9"
sql_delete = "delete from user where userid<3" cursor.execute(sql_insert)
print(cursor.rowcount) cursor.execute(sql_update)
print(cursor.rowcount) cursor.execute(sql_delete)
print(cursor.rowcount)#受影响的行数
#发现数据库并没有改变,而让其改变的话,只能提交commit conn.commit() cursor.close()
conn.close()

异常回滚:

import pymysql

conn = pymysql.connect(
host = '127.0.0.1',
port = 3307,
user = 'root',
password = 'root',
db = 'songqin',
charset = 'utf8',
#cursorclass = pymysql.cursors.DictCursor
)
#获取一个游标
cursor = conn.cursor()
sql_insert = "insert into user(userid,username) values(10,'name10')"
sql_update = "update user set username='name91' where userid=9"
sql_delete = "delete from user where userd<3" #这里故意写错 try:
cursor.execute(sql_insert)
print(cursor.rowcount) cursor.execute(sql_update)
print(cursor.rowcount) cursor.execute(sql_delete)
print(cursor.rowcount)#受影响的行数
#发现数据库并没有改变,而让其改变的话,只能提交commit conn.commit()
except Exception as e:
print(e)
conn.rollback() #数据回滚到之前的状态 cursor.close()
conn.close()

pythonDB api的学习的更多相关文章

  1. Rest API 开发 学习笔记(转)

    Rest API 开发 学习笔记 概述 REST 从资源的角度来观察整个网络,分布在各处的资源由URI确定,而客户端的应用通过URI来获取资源的表示方式.获得这些表徵致使这些应用程序转变了其状态.随着 ...

  2. ava如何实现系统监控、系统信息收集、sigar开源API的学习(转)

    ava如何实现系统监控.系统信息收集.sigar开源API的学习(转) 转自:http://liningjustsoso.iteye.com/blog/1254584 首先给大家介绍一个开源工具Sig ...

  3. JavaSE中线程与并行API框架学习笔记——线程为什么会不安全?

    前言:休整一个多月之后,终于开始投简历了.这段时间休息了一阵子,又病了几天,真正用来复习准备的时间其实并不多.说实话,心里不是非常有底气. 这可能是学生时代遗留的思维惯性--总想着做好万全准备才去做事 ...

  4. TensorLayer官方中文文档1.7.4:API – 强化学习

    API - 强化学习¶ 强化学习(增强学习)相关函数. discount_episode_rewards([rewards, gamma, mode]) Take 1D float array of ...

  5. abp学习(四)——根据入门教程(aspnetMVC Web API进一步学习)

    Introduction With AspNet MVC Web API EntityFramework and AngularJS 地址:https://aspnetboilerplate.com/ ...

  6. 前后端分离&接口API设计学习报告

    接口API设计学习报告 15331023 陈康怡 什么是API? API即Application Programming Interface.API是一种通道,负责一个程序与另一个程序的沟通.而对于w ...

  7. Android API Guides 学习笔记---Application Fundamentals(一)

    今天开始学习google官网上的API guides ,主要读了Application Fundamentals这一章节,此章节介绍了一个App的基本组成,共包括四大部分内容. 1.      App ...

  8. ArcGIS API Reference & Flex API samples学习进度备忘

    书签:跳过:另外跳过的内容有待跟进 __________________学习资源: 1.http://help.arcgis.com/en/webapi/flex/apiref/index.html ...

  9. JavaSE中线程与并行API框架学习笔记1——线程是什么?

    前言:虽然工作了三年,但是几乎没有使用到多线程之类的内容.这其实是工作与学习的矛盾.我们在公司上班,很多时候都只是在处理业务代码,很少接触底层技术. 可是你不可能一辈子都写业务代码,而且跳槽之后新单位 ...

随机推荐

  1. js闭包实际用途

    闭包例:防止双击 在线商店的购物车里,为防止“多重购买”,需要防止按钮被双击. 下面用“jQuery + 闭包”来实现这一功能. HTML <form name="frm" ...

  2. NFT是什么,有什么前景?

    去年 11 月,Crypokitties 的发布给加密货币的世界带来了风暴,有些加密猫的价格甚至涨到了 30 万美元,以太坊网络拥堵不堪,平均贡献了当时以太坊网络30%的交易额.当 Cryptokit ...

  3. [IR课程笔记]Query Refinement and Relevance Feedback

    相关反馈的两种类型: “真实”的相关反馈: 1. 系统返回结果 2. 用户提供一些反馈 3. 系统根据这些反馈,返回一些不同的,更好的结果 “假定”的相关反馈 1. 系统得到结果但是并不返回结果 2. ...

  4. 微信小程序开发:学习笔记[4]——样式布局

    微信小程序开发:学习笔记[4]——样式布局 Flex布局 新的布局方式 在小程序开发中,我们需要考虑各种尺寸终端设备上的适配.在传统网页开发,我们用的是盒模型,通过display:inline | b ...

  5. JS中继承方式总结

    说在前面:为了使代码更为简洁方便理解, 本文中的代码均将"非核心实现"部分的代码移出. 一.原型链方式关于原型链,可点击<深入浅出,JS原型链的工作原理>,本文不再重复 ...

  6. Django+ajax+jsonp实现借口调用文本处理

    首页 提交 <script src="/static/jquery-2.1.4.min.js"></script> <script type=&quo ...

  7. 《机器学习实战》学习笔记第三章 —— 决策树之ID3、C4.5算法

    主要内容: 一.决策树模型 二.信息与熵 三.信息增益与ID3算法 四.信息增益比与C4.5算法 五.决策树的剪枝 一.决策树模型 1.所谓决策树,就是根据实例的特征对实例进行划分的树形结构.其中有两 ...

  8. 51Nod 1158 全是1的最大子矩阵 —— 预处理 + 暴力枚举 or 单调栈

    题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1158 1158 全是1的最大子矩阵  基准时间限制:1 秒 空 ...

  9. 在eclipse配置Maven

    一.配置系统Maven环境变量    1. 前往https://maven.apache.org/download.cgi下载最新版的Maven程序: 2. 新建环境变量MAVEN_HOME,赋值D: ...

  10. Java丨角色权限控制——数据库设计

    相信各位读者对于角色权限管理这个需求并不陌生.那么是怎么实现的呢?今天小编来说道说道! 1.首先我们来进行数据库的设计,如何设计数据库是实现权限控制的关键: 1)用户表: id:主键.自增.int n ...