python操作mysql数据库(增,删,改,查)

26 篇文章 1 订阅
#!/usr/bin/env python
#coding:utf-8
import MySQLdb
db=MySQLdb.connect(host='localhost',user='root',passwd='123',db='08day5')
cur=db.cursor(cursorclass=MySQLdb.cursors.DictCursor)#以字典的形式展示
#cur=db.cursor()
#如果数据表已经存在,则使用execute()方法删除
cur.execute('DROP TABLE IF EXISTS EMPLOYEE')
#创建数据表
sql='''CREATE TABLE EMPLOYEE(
       id INT PRIMARY KEY AUTO_INCREMENT,
       first_name VARCHAR(20) NOT NULL,
       last_name VARCHAR(20),
       age INT,
       sex CHAR(1),
       income FLOAT
       )'''
cur.execute(sql)
#插入操作(写法1)
sql='''INSERT INTO EMPLOYEE(first_name,last_name,age,sex,income) 
       values('xiaoqing','zhang',20,'W',2400)'''
try:
    cur.execute(sql)#执行sql语句
    db.commit()#提交到数据库执行
except:
    db.rollback()#Rollback in case there is any error!
#插入操作(写法2:注意引号的结束位置 以及 续行符的使用)
sql="INSERT INTO EMPLOYEE(first_name,last_name,\
     age,sex,income) \
     VALUES('%s','%s','%d','%c','%f')" % \
     ('wuji','zhang',34,'M',3400.8)
try:
    cur.execute(sql)#执行sql语句
    db.commit()#提交到数据库执行
except:
    print 'there is some error!'
    db.rollback()#发生错误时,回滚!
#查询操作
sql="SELECT * FROM EMPLOYEE WHERE income > '%d'" % (1000)
try:
    cur.execute(sql)
    results=cur.fetchall()
    print results
except:
    print 'there is some error!'
#更新操作
sql="UPDATE EMPLOYEE SET AGE=AGE+1 WHERE SEX='%c'" % ('M')
try:
    cur.execute(sql)#执行sql语句
    db.commit()#提交到数据库执行
except:
    db.rollback()#发生错误时回滚!
#删除记录
sql="DELETE FROM EMPLOYEE WHERE age>'%d'" % (20)
try:
    cur.execute(sql)
    db.commit()
except:
    db.rollback()
cur.close()
db.close()


执行事务
事务机制可以确保数据一致性。
事务应该具有4个属性:原子性、一致性、隔离性、持久性。这四个属性通常称为ACID特性。
原子性(atomicity)。一个事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做。
一致性(consistency)。事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。
隔离性(isolation)。一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。
持久性(durability)。持续性也称永久性(permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。
Python DB API 2.0 的事务提供了两个方法 commit 或 rollback。
对于支持事务的数据库, 在Python数据库编程中,当游标建立之时,就自动开始了一个隐形的数据库事务。
commit()方法提交游标的所有更新操作,rollback()方法回滚当前游标的所有操作。每一个方法都开始了一个新的事务。


原文链接:点击打开链接



下面是一个使用Python进行MySQL数据库操作的示例代码: ```python import mysql.connector # 连接到MySQL数据库 cnx = mysql.connector.connect( host='localhost', user='username', password='password', database='database_name' ) # 创建游标对象 cursor = cnx.cursor() # 插入数据 insert_query = "INSERT INTO table_name (column1, column2) VALUES (%s, %s)" values = ('value1', 'value2') cursor.execute(insert_query, values) cnx.commit() # 询数据 select_query = "SELECT * FROM table_name" cursor.execute(select_query) result = cursor.fetchall() for row in result: print(row) # 更新数据 update_query = "UPDATE table_name SET column1 = %s WHERE column2 = %s" values = ('new_value', 'value2') cursor.execute(update_query, values) cnx.commit() # 除数据 delete_query = "DELETE FROM table_name WHERE column1 = %s" value = ('value1', ) cursor.execute(delete_query, value) cnx.commit() # 关闭游标和数据库连接 cursor.close() cnx.close() ``` 在上面的示例中,我们首先使用`mysql.connector.connect()`函数连接到MySQL数据库,并提供主机、用户名、密码和数据库名称等连接参数。 然后,我们使用`cursor()`方法创建一个游标对象,该游标对象用于执行SQL询和插入等操作。 接下来,我们执行SQL插入操作。在插入操作中,我们使用占位符`%s`来代替实际的值,并将值以元组的形式传递给`execute()`方法。最后,我们使用`commit()`方法提交更。 然后,我们执行SQL操作,并使用`fetchall()`方法获取所有询结果。然后,我们可以使用循环遍历结果并进行处理。 然后,我们执行SQL更新操作。在更新操作中,我们使用占位符`%s`来代替实际的值,并将值以元组的形式传递给`execute()`方法。最后,我们使用`commit()`方法提交更。 最后,我们执行SQL操作。在操作中,我们使用占位符`%s`来代替实际的值,并将值以元组的形式传递给`execute()`方法。最后,我们使用`commit()`方法提交更。 请确保替换示例代码中的主机、用户名、密码、数据库名称、表名、列名和值等信息,以适应你的实际情况。 注意:在使用MySQL连接器时,建议进行错误处理和异常处理,以强程序的健壮性和安全性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值