1. python DB api简介

python DB api python访问数据库的统一接口规范,详细可参考https://www.python.org/dev/peps/pep-0249/
python DB api中主要包括三个重要的对象 数据库连接对象 connection,数据库交互对象 cursor和数据库异常类 exceptions

2. 使用python DB API访问数据库的流程

3. python+MYSQL开发环境的配置

python-mysql connector 用于python和mysql服务器进行连接,下载地址 https://sourceforge.net/projects/mysql-python/
syslog是一个Mysql可视化的管理工具, 下载地址 https://sqlyog.en.softonic.com/

4 connection对象

使用方法MySQLdb.connection(host,port,user,passwd,db,charset)返回一个connection对象

connection对象支持的方法有

方法 说明
cursor()  使用该连接创建并返回的游标
commit()  提交当前事务
rollback()  回滚当前事务
close()  关闭连接

连接数据库

 1 import MySQLdb
 2 conn = MySQLdb.Connect(host = '127.0.0.1',
 3                           port = 3306,
 4                           user = 'root',
 5                           passwd = '123456',
 6                           db = 'test',
 7                           charset='utf8')
 8 cur = conn.cursor()
 9 cur.close()
10 conn.close()

5. 数据库游标对象cursor

cursor对象的方法
execute(op[,args]) 执行一个数据库查询和命令
fetchone() 取得结果集中下一行
fetchmany(size) 获取结果集中下几行
fetchall() 获取结果集剩下的所有行
rowcount 最近一次execute返回的数据的行数或影响的行数
close() 关闭游标对象

我们在数据库中建立了一个test数据库,在其中建立了一个user表如下图所示
利用cursor对象来执行简单的查询语句
 1 import MySQLdb
 2 conn = MySQLdb.Connect(host = '127.0.0.1',
 3                           port = 3306,
 4                           user = 'root',
 5                           passwd = '123456',
 6                           db = 'test',
 7                           charset='utf8')
 8 cur = conn.cursor()
 9 sql = 'select * from user'
10 cur.execute(sql)
11 print cur.rowcount
12 print cur.fetchone()
13 print cur.fetchmany(3)
14 print cur.fetchall()
15 cur.close()
16 conn.close()

输出

9 (1L, u'name1') ((2L, u'name2'), (3L, u'name3'), (4L, u'name4')) ((5L, u'name5'), (6L, u'name6'), (7L, u'name7'), (8L, u'name8'), (9L, u'name9'))
6. 事务处理
事务:访问和更新数据库的一个程序执行单元
原子性:事务中包括的诸操作要么都做,要么都不做
一致性:事务必须使数据库从一致性状态变到另一个一致性状态
隔离性:一个事务的执行不能被其他事务干扰
持久性:事务一旦提交,它对数据库的改变是永久性的
开发中怎样使用事务?
关闭自动commit:设置conn.autocommit(False)
正常结束事务:conn.commit()
异常结束事务:conn.rollback()
代码示例
 1 import MySQLdb
 2 conn = MySQLdb.Connect(host = '127.0.0.1',
 3                           port = 3306,
 4                           user = 'root',
 5                           passwd = '123456',
 6                           db = 'test',
 7                           charset='utf8')
 8 cur = conn.cursor()
 9 sql_insert = "insert into user(usrid, usrname) values(10, 'name10')"
10 sql_delete = "delete from user where usrid<3"
11 sql_update = "update user set usrname = 'name91' where usrid=9"
12 try:
13     cur.execute(sql_insert)
14     cur.execute(sql_update)
15     cur.execute(sql_delete)
16     conn.commit()
17 except Exception as e:
18     print e
19     conn.rollback()
20 cur.close()
21 conn.close()

7. 银行转账实例

假设张三要向王五转账100元,其转账流程如下图所示

代码实现
 1 import MySQLdb
 2 def checkAccountAvailable(conn,username):
 3     cur = conn.cursor()
 4     sql = "select * from account where username='%s'"%username
 5     print sql
 6     cur.execute(sql)
 7     r = cur.rowcount
 8     print r
 9     cur.close()
10     return r
11
12 def account(conn, username):
13     cur=conn.cursor()
14     sql = "select * from account where username='%s'"%username
15     print sql
16     cur.execute(sql)
17     account = cur.fetchone()[1]
18     cur.close
19     return  account
20 def main():
21     conn = MySQLdb.Connect(host = '127.0.0.1',
22                           port = 3306,
23                           user = 'root',
24                           passwd = '123456',
25                           db = 'test',
26                           charset='utf8')
27     if checkAccountAvailable(conn,'zhangsan') and checkAccountAvailable(conn,'wangwu'):
28         if account(conn,"zhangsan") >= 100:
29             try:
30                 cur = conn.cursor()
31                 cur.execute("update account set account=account-100 where username='zhangsan'")
32                 cur.execute("update account set account=account+100 where username='wangwu'")
33                 conn.commit()
34             except Exception as e:
35                 print e
36                 conn.rollback()
37             finally:
38                 cur.close()
39         else:
40             print "zhangsan has not enough money"
41     else:
42         print "account not existed"
43
44     conn.close()
45 main()

 
 

 
null

转载于:https://www.cnblogs.com/blackclody/p/6893235.html

python访问数据库相关推荐

  1. python获取mysql中的数据供js调用_详解js文件通过python访问数据库方法

    我来教你 js文件怎么通过python访问数据库,希望能够为你带来帮助. 1.如果是要提交表单内容给 服务器的 python 处理,那么只需要在表单 里面的 action 填写服务端的处理路由就可以了 ...

  2. 使用程序设计语言访问SQL:JDBC、从Python访问数据库、ODBC、嵌入式SQL

    SQL 提供了一种强大的声明式查询语言.用 SQL 编写查询通常比用通用程序设计语言同样的查询进行编码要简单得多.然而,基于至少两种原因数据库程序员必须能够访问通用程序设计语言: 1.因为 SQL 并 ...

  3. python访问数据库如何解决高并发_怎样解决数据库高并发的问题

    怎样解决数据库高并发的问题?解决数据库高并发使用缓存式的Web应用程序架构.增加Redis缓存数据库.增加数据库索引.页面静态化.使用存储过程.MySQL主从读写分离.分表分库.负载均衡集群. 解决数 ...

  4. python访问数据库如何解决高并发_使用 Python 和 Oracle 数据库实现高并发性

    随着趋势发展的核心转向更多而不是更快发展,最大限度地提高并发性的重要性日益凸显.并发性使得编程模式发生了新的转变,可以编写异步代码,从而将多个任务分散到一组线程或进程中并行工作.如果您不是编程新手并且 ...

  5. python访问数据库oracle_python连接oracle数据库

    结合自己公司项目练练手数据库这块的操作. 我公司所有项目均使用oracle数据库,就需要先安装oracle相关的.whl文件.在网上找了一些关于"python连接数据库"的相关帖子 ...

  6. python访问数据库统一方法_Python 3.x 连接数据库(pymysql 方式)

    参考:http://www.cnblogs.com/woider/p/5926744.html ==================pymysql=================== 1.PyMyS ...

  7. Python 访问数据库

    数据库 当程序运行结束时,通常需要将数据保存到磁盘上,而如何定义数据的格式就是一个大问题 假如我们需要保存一个班级的成绩 名字 成绩 Bob 85 Lisa 55 你可以用一个文本文件保存,一行保存一 ...

  8. python访问数据库日志文件_python利用inotify实现把nginx日志实时写入数据库

    利用了pyinotify库,我用的是这里的这个,外链网址已屏蔽 其实网上yum上也有pyinotify库可以安装. 写入数据库是pymysql这里做一下记录, 先务pyinotify实现一个tail ...

  9. Python MySQL 数据库

    python DB API python访问数据库的统一接口规范,完成不同数据库的访问 包含的内容: connection cursor exceptions 访问数据库流程: 1.创建connect ...

最新文章

  1. ioctl kernel 构建注意事项
  2. java基础学不会_java基础
  3. 数据结构单向不循环链表实现多项式合并
  4. 小眼睛有多惨?美颜都懒得救你......
  5. 零基础跨行学习Java是否可行
  6. 蓝软服务器文件监控同步系统,蓝软7000ERP通用操作使用教程
  7. CentOS 7 最小化安装后的注意事项(一)
  8. node.js(四)Mongoose使用进阶
  9. 使用node批量压缩图片
  10. steam官网网页服务器打不开,steam打不开,教您怎么解决steam打不开
  11. 近年来,小样本学习取得重大进展了吗?
  12. 2022/7/23 日记
  13. python 可视化 ploty 画3dmesh网格图
  14. Android实现截屏和截长图功能的几种方法
  15. 企业微信机器人发送消息
  16. 【好文】为什么必须学好.Net Core?怎么样才能弯道超车拿高薪?这样做一周就够了!(文末彩蛋)...
  17. WebRTC技术总结
  18. 男女交往技巧 男生如何赞美女生才有效
  19. SOC环境中挂载C和S家VIP时,解决UVM uvm_pkg冲突问题
  20. 数理天地杂志数理天地杂志社数理天地编辑部2022年第15期目录

热门文章

  1. android 时间戳 时区,三句话理解时区与时间戳
  2. java for循环的这种写法怎么理解:for (; ; ) {},
  3. ExtClassLoader和AppClassLoader是Launcher类的两个内部类
  4. 后端JAVA:说说你对【注解】的理解
  5. 后端:最受欢迎Java数据库访问框架(DAO层)
  6. android sqlite alert table,android sqlite数据库操作
  7. 在Linux下禁用键盘、鼠标、触摸板(笔记本)等输入设备
  8. lynda ux_如何建立内部UX团队
  9. flutter 透明度动画_Flutter中的动画填充+不透明度动画✨
  10. CF1100F Ivan and Burgers