当前位置:Gxlcms > 数据库问题 > MySQL(三)

MySQL(三)

时间:2021-07-01 10:21:17 帮助过:9人阅读

#!/usr/bin/python 2 # -*- coding: UTF-8 -*- 3 4 import MySQLdb 5 6 #打开数据库连接 7 db=MySQLdb.connect("localhost","root","a616366255","TESTDB") 8 9 #使用cursor()方法获取操作游标 10 cursor=db.cursor() 11 12 #使用execute方法执行SQL语句 13 cursor.execute("SELECT VERSION()") 14 15 #使用fetchone()方法获取一条数据库 16 data=cursor.fetchone() 17 18 print "Database version : %s "%data 19 20 #关闭数据库连接 21 db.close()

以上脚本的输出结果为:

Database version : 5.7.17-log

 

创建数据库表

如果数据库连接存在可以使用execute()方法来为数据库创建表,如下图所示创建表EMPLOYEE:

 1 #!/usr/bin/python
 2 # -*- coding: UTF-8 -*-
 3 
 4 import MySQLdb
 5 
 6 #打开数据库连接
 7 db=MySQLdb.connect("localhost","root","a616366255","TESTDB")
 8 
 9 #使用cursor()方法获取操作游标
10 cursor=db.cursor()
11 
12 #如果数据表已经存在用execute()方法删除表
13 cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")
14 
15 #创建数据表SQL语句
16 sql="""CREATE TABLE EMPLOYEE(
17        FIRST_NAME CHAR(20) NOT NULL,
18        LAST_NAME CHAR(20),
19        AGE INT,
20        SEX CHAR(1),
21        INCOME FLOAT)"""
22 
23 cursor.execute(sql)
24 
25 #关闭数据库连接
26 db.close()

 

数据库插入操作

以下实例使用执行SQL INSERT语句向表EMPLOYEE插入记录:

 1 #!/usr/bin/python
 2 # -*- coding: UTF-8 -*-
 3 
 4 import MySQLdb
 5 
 6 #打开数据库连接
 7 db=MySQLdb.connect("localhost","root","a616366255","TESTDB")
 8 
 9 #使用cursor()方法获取操作游标
10 cursor=db.cursor()
11 
12 #SQL插入语句
13 sql="""INSERT INTO EMPLOYEE(FIRST_NAME,
14        LAST_NAME,AGE,SEX,INCOME)
15        VALUES(‘Mac‘,‘Mohan‘,20,‘M‘,2000)"""
16 
17 try:
18     #执行sql语句
19     cursor.execute(sql)
20     #提交到数据库执行
21     db.commit()
22 except:
23     #Rollback in case there is any error
24     db.rollback()
25 
26 #关闭数据库连接
27 db.close()

 

数据库查询操作

Python查询Mysql使用fetchone()方法获取单条数据,使用fetchall()方法获取多条数据。

  • fetchone():该方法获取下一个查询结果集。结果集是一个对象
  • fetchall():接受全部的返回结果行
  • rowcount:这是一个只读属性,并返回执行execute()方法后影响的行数

实例:

查询EMPLOYEE表中INCOME字段大于1000的所有数据:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

import MySQLdb

#打开数据库连接
db=MySQLdb.connect("localhost","root","a616366255","TESTDB")

#使用cursor()方法获取操作游标
cursor=db.cursor()

#SQL查询语句
sql="""SELECT * FROM EMPLOYEE
       WHERE INCOME > ‘%d‘"""%(1000)

try:
    #执行sql语句
    cursor.execute(sql)
    #获取所有记录列表
    results=cursor.fetchall()
    for row in results:
        fname=row[0]
        lname=row[1]
        age=row[2]
        sex=row[3]
        income=row[4]
        #打印结果
        print "fname=%s,lname=%s,age=%d,sex=%s,income=%d"%               (fname,lname,age,sex,income)
except:
    print "Error:unable to fetch data"

#关闭数据库连接
db.close()

以上脚本执行结果如下:

fname=Mac,lname=Mohan,age=20,sex=M,income=2000

 


 

数据库更新操作

更新操作用于更新数据表的数据,以下实例将EMPLOYEE表中的SEX字段为‘M‘的AGE字段增加1

 1 #!/usr/bin/python
 2 # -*- coding: UTF-8 -*-
 3 
 4 import MySQLdb
 5 
 6 #打开数据库连接
 7 db=MySQLdb.connect("localhost","root","a616366255","TESTDB")
 8 
 9 #使用cursor()方法获取操作游标
10 cursor=db.cursor()
11 
12 #SQL更新语句
13 sql="UPDATE EMPLOYEE SET AGE=AGE+1 WHERE SEX=‘%c‘"%(M)
14 
15 try:
16     #执行sql语句
17     cursor.execute(sql)
18     #提交到数据库执行
19     db.commit()
20 except:
21     db.rollback()
22 
23 #关闭数据库连接
24 db.close()

删除操作

删除操作用于删除数据表中的数据,以下实例演示了删除数据表EMPLOYEE中AGE>20的所有数据:

 1 #!/usr/bin/python
 2 # -*- coding: UTF-8 -*-
 3 
 4 import MySQLdb
 5 
 6 #打开数据库连接
 7 db=MySQLdb.connect("localhost","root","a616366255","TESTDB")
 8 
 9 #使用cursor()方法获取操作游标
10 cursor=db.cursor()
11 
12 #SQL删除语句
13 sql="DELETE FROM EMPLOYEE WHERE AGE > ‘%d‘"%(20)
14 
15 try:
16     #执行sql语句
17     cursor.execute(sql)
18     #提交到数据库执行
19     db.commit()
20 except:
21     db.rollback()
22 
23 #关闭数据库连接
24 db.close()

执行事务

事务机制可以确保数据一致性。

事务应该具有四个属性:原子性、一致性、隔离性、持久性。这四个属性通常成为ACID特性。

  • 原子性(atomicity)。一个事务是一个不可分割的工作单位,事务中包括的操作要么都做要么都不做。
  • 一致性(consistency)。事务必须是数据库从一个一致性状态变为另一个一致性状态。
  • 隔离性(isolation)。一个事务不能被其它事务干扰,即是指一个事务所用的数据和操作对并发执行的其他事务来说是隔离的。
  • 持久性(durability)。一个事务一旦提交,对数据库中数据的改变就是永久的,接下来的其它操作和故障不应该对其有影响。

Python DB API 2.0的事务提供了两个方法commit和rollback。

在上面的插入删除实例当中有体现。对于支持事务的数据库,在Python数据库编程中,当游标建立之时,就自动开始了一个隐形的数据库事务。commit()方法提交游标的所有操作,rollback()方法回滚当前游标的所有操作。每一个方法都开始了一个新的事务。

 

开通博客主要是为了记录自己平时的学习经历,这些内容都是从菜鸟教程上看到然后按照自己的理解和记忆一个字一个字打出来的,希望能够记录下自己学到的一些东西,一段时间之后还可以重新看看。

 

MySQL(三)

标签:数据   访问   update   for   提交   使用   run   span   连接数据库   

人气教程排行