有时候需要操作数据库,为了能使用统一的接口访问,我们采用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. Asp.Net Mvc: 浅析TempData机制

    一. Asp.Net Mvc中的TempData 在Asp.Net Mvc框架的ControllerBase中存在一个叫做TempData的Property,它的类型为TempDataDictiona ...

  2. Android学习之——优化篇(2)

    一.高级优化     上篇主要从0基础优化的方式,本篇主要将从程序执行性能的角度出发,分析各种经常使用方案的不足.并给出对象池技术.基础数据类型替换法.屏蔽函数计算三种能够节省资源开销和处理器时间的优 ...

  3. Algorithm: dynamic programming

    1. Longest Increasing Subsequence (LIS) problem unsorted array, calculate out the maximum length of ...

  4. mini2440 u-boot下设置tftp

    在烧写好u-boot后,重新启动mini2440,一直按空格键进入u-boot界面: U-Boot 月 - ::) modified by tekkamanninja (tekkamanninja@. ...

  5. Appium——api常用函数

    appium常用函数介绍:   获取页面信息:   1. def get_current_activity(cls, driver): ''' 获取当前页面的activity :param drive ...

  6. 关于Dubbo

    什么是Dubbo 一款分布式服务框架 高性能和透明化的RPC远程服务调用方案 SOA服务治理方案 每天为2千多个服务提供大于30亿次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点以及别的公司的业务 ...

  7. yii2 linux安装教程

    安装扩展 安装Yii最好的方式就是使用Composer安装,所以我们需要安装Composer,但是为了安装Composer,我们需要安装一下关于Composer和Yii2的许多扩展包,别担心下面的教程 ...

  8. java对象的初始化过程和创建对象的几种方式

    1.加载父类,加载父类的静态属性和静态代码块 2.加载子类,加载子类的静态属性和静态代码块 3.初始化父类中的非静态属性并赋初值,执行父类非静态代码块,执行父类构造. 4.初始化子类中的非静态属性并赋 ...

  9. TCP协议与流通信

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! TCP(Transportation Control Protocol)协议与IP ...

  10. 机器学习:simple linear iterative clustering (SLIC) 算法

    图像分割是图像处理,计算机视觉领域里非常基础,非常重要的一个应用.今天介绍一种高效的分割算法,即 simple linear iterative clustering (SLIC) 算法,顾名思义,这 ...