zoukankan      html  css  js  c++  java
  • Python_DB_Api

    python DB API

    内容

    1. 建立连接connection
    2. 数据库交互对象cursor
    3. 数据库异常类exception

    流程

    1. 创建connection
    2. 获取cursor
    3. 执行查询、执行命令、获取数据、处理数据
    4. 关闭cursor 关闭connection
    import MySQLdb
    print MySQLdb
    

    Python 开发mysql

    1. Python 代码(包含SQL语句)+ Eclipse +Mysql for python
    2. Mysql 服务器 + SQLyog

    DB Api -数据库连接对象connection

    • 连接对象:建立Python客户端与数据库的网络连接

    • 创建方法:MySQLdb.Connect(参数)

      • host 字符串 mysql服务器地址
      • port 数字 mysql服务器端口号
      • user 字符串 用户名
      • password字符串 密码
      • db 字符串 数据库名称
      • charset字符串 连接编码
    • connection 对象支持方法

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

    实例

    import MySQLdb
    
    conn = MySQLdb.Connect(
    						host='127.xxx',
    						port=3306,
    						user='root',
    						passwd='xxxx'
    						db='testli'
    						charset='utf8'
    						)
    						
    cursor=conn.cursor()
    
    print conn
    print corsor
    
    cursor.close()
    conn.close()
    

    数据库游标对象cursor

    • 游标对象: 用于执行查询和获取结果
    • cursor对象支持的方法:
      • execute(op[,args]) 执行一个数据库查询和命令
      • fetchone() 取得结果的下一行
      • fetchmany(size) 获取结果集的下几行
      • fetchall() 获取结果集中剩下的所有行
      • rowcount 最近一次execute返回数据的行数或者影响行数
      • close() 关闭游标对象
    • execute方法:执行SQL、将结果从数据库获取到客户端
    execute(sql)     执行SQL(数据库)   结果   缓存到本地客户端
    
    • fetch*() 方法:移动rownumber,返回数据,操作对象是本地缓存数据
    fetchone()
    fetchmany(3)
    fetchall()
    

    实例 select查询数据

    步骤:
    1. 创建connection
    2. 获取cursor
    3. 使用cursor.execute() 执行select语句
    4. 使用cursor.fetch*() 获取并处理数据
    5. 关闭cursor 关闭connection

    1. 新建table
    CREATE TABLE 'user'(
    	'userid' INT(11) NOT NULL  AUTO_INCREMENT,
    	'username' VARCHAR(100) DEAULT NULL,
    	PRIMARY KEY ('userid)
    )ENGINE=INNODB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8
    
    1. 进行操作测试
    import MySQLdb
    
    conn = MySQLdb.Connect(
    						host='127.xxx',
    						port=3306,
    						user='root',
    						passwd='xxxx'
    						db='testli'
    						charset='utf8'
    						)
    						
    cursor=conn.cursor()
    
    sql="select * from user"
    cursor.execute(sql)
    
    print corsor.row.count
    
    rs = cursor.fetchone()
    print rs
    
    rs = cursor.fetchmany(3)
    print rs 
    
    rs = cursor.fetchall()
    print rs 
    
    cursor.close()
    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'))
    
    1. 传递变量
    import MySQLdb
    
    conn = MySQLdb.Connect(
    						host='127.xxx',
    						port=3306,
    						user='root',
    						passwd='xxxx'
    						db='testli'
    						charset='utf8'
    						)
    						
    cursor=conn.cursor()
    
    sql="select * from user"
    cursor.execute(sql)
    
    
    rs = cursor.fetchall()
    for row in rs:
    	print "userid=%s,username=%s" % row
    
    cursor.close()
    conn.close()
    
    

    结果:

    userid=1,username=name1
    userid=2,username=name2
    userid=3,username=name3
    userid=4,username=name4
    userid=5,username=name5
    userid=6,username=name6
    userid=7,username=name7
    userid=8,username=name8
    userid=9,username=name9
    

    实例 insert、update/delete更新数据库

    1. 创建connection,并获取cursor;
    2. 使用cursor.execute()执行insert/update/delete语句;
    3. 判断是否出现异常,IF FALSE,使用conn.commit()提交事务;IF True,使用conn.rollback() 回滚事务;
    4. 关闭cursor   关闭connection 
    
    • 事务:访问和更新数据库的一个程序执行单元

      * 原子性:事务中包括的诸操作要么都做,要么都不做;
      * 一致性: 事务必须使数据库从一致性状态变到另一个一致性状态
      * 隔离性:一个事务的执行不能被其他事务干扰
      * 持久性:事务一旦提交,它对数据库的改变就是永久性的
      
    • 开发中怎样使用事务?

      • 关闭自动commit:设置conn.autocommit(False)
      • 正常结束事务:conn.commit()
      • 异常结束事务:con.rollback()
    import MySQLdb
    
    conn = MySQLdb.Connect(
    						host='127.xxx',
    						port=3306,
    						user='root',
    						passwd='xxxx'
    						db='testli'
    						charset='utf8'
    						)
    						
    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
    
    conn.commit()
    
    cursor.close()
    conn.close()
    
    
  • 相关阅读:
    PHP中的赋值运算符
    PHP-字符串过长不用担心
    php-引号中出现$
    wamp多站点配置
    php-wamp滴定仪网站的根目录
    php初探
    JMeter jmeter-plugins插件的安装使用
    JMeter 调试取样器(Debug Sampler)
    css选择器
    css文本样式
  • 原文地址:https://www.cnblogs.com/li-volleyball/p/5631483.html
Copyright © 2011-2022 走看看