python中mysql的相关操作

本文详细介绍了如何使用MySQLdb模块连接并操作数据库,包括执行DML命令、插入数据、查询数据,并展示了如何调用带有参数和返回结果集的存储过程。

安装第三方模块:MYSQLdb:

下载地址:https://pypi.python.org/pypi/MySQL-python/1.2.4

 安装会自动检测python的安装环境的,不需要任何配置

一、相应DML命令

import os, sys, string
import MySQLdb

#连接数据库
try:
    conn = MySQLdb.connect(host='127.0.0.1',user='root',passwd='feng',db='test')
except Exception, e:
    print e
    sys.exit()
# 获取cursor对象来进行操作
cursor = conn.cursor()

#插入单条数据
sql = "insert into staffinfo(i_staff_no,v_staff_name) values (%d, '%s')"%(333,"ccc")
try:
    cursor.execute(sql)
except Exception, e:
    print e
#插入多条数据
sql = "insert into staffinfo(i_staff_no,v_staff_name) values (%s, %s)"#此处都是%s类型
val = ((444,"ddd"),(555,"eee"), (666,"fff"))
try:
    cursor.executemany(sql, val)
except Exception, e:
    print e

#查询数据
sql= "select * from staffinfo order by i_staff_no"
cursor.execute(sql)
alldata = cursor.fetchall()
# 如果有数据返回,就循环输出, alldata是有个二维的列表
if alldata:
    for rec in alldata:
        print rec[0], rec[1]

cursor.close()
conn.close()

运行结果:


 二、调用存储过程

  1、带参数的存储过程

     存储过程:

DELIMITER //  
create procedure python_pro_param(in _i_staff_no int,out _v_staff_name varchar(50))
begin
    select v_staff_name into _v_staff_name
    from staffinfo
    where i_staff_no=_i_staff_no;
end
//
DELIMITER  ;

调用:

import os, sys, string
import MySQLdb

i_staff_no=222
v_staff_name=''

try:
    conn = MySQLdb.connect(host='127.0.0.1',user='root',passwd='feng',db='test')
except Exception, e:
    print e
    sys.exit()
       
cursor=conn.cursor()   
cursor.callproc('python_pro_param',(i_staff_no,v_staff_name))   
cursor.execute('select @_python_pro_param_0,@_python_pro_param_1')#0:第一个参数
data=cursor.fetchall()                                            #1:第二个参数
if data:
    for rec in data:     
        v_staff_name=rec[1]   
        print i_staff_no,v_staff_name

cursor.close()
conn.close()

运行结果:

    

  2、返回结果集的存储过程

     存储过程:

DELIMITER //  
create procedure python_pro_dataset(in _i_staff_no_start int,in _i_staff_no_end int)
begin
    select i_staff_no,v_staff_name
    from staffinfo
    where i_staff_no between _i_staff_no_start and _i_staff_no_end;
end
//
DELIMITER  ;

调用:

import os, sys, string
import MySQLdb

i_staff_no_start=222
i_staff_no_end=555

try:
    conn = MySQLdb.connect(host='127.0.0.1',user='root',passwd='feng',db='test')
except Exception, e:
    print e
    sys.exit()

cursor=conn.cursor()        
cursor.execute('call python_pro_dataset(%s,%s)',(i_staff_no_start,i_staff_no_end))   
data=cursor.fetchall()   
if data:
    for rec in data:   
        print rec[0],rec[1]
        cursor.nextset()

cursor.close()
conn.close()

运行结果:

   


### Python MySQL 基础操作教程 #### 使用 `mysql-connector-python` 库连接到 MySQL 数据库 为了在 Python 中执行 MySQL 操作,首先需要确保已经安装了 `mysql-connector-python` 包[^3]。 ```bash pip install mysql-connector-python ``` #### 导入库并建立连接 通过导入必要的库来创建与 MySQL 的连接: ```python import mysql.connector connection = mysql.connector.connect( host='localhost', user='root', # 用户名 password='your_password', # 密码 database='test_db' # 要使用的数据库名称 ) cursor = connection.cursor() ``` #### 执行查询操作 可以使用游标对象执行 SQL 查询命令,并获取返回的结果集: ```python query = "SELECT * FROM users" cursor.execute(query) rows = cursor.fetchall() for row in rows: print(row) ``` 此段代码会打印出表中的所有记录[^1]。 #### 插入新纪录 向指定表格内插入新的条目可以通过构建 INSERT INTO 语句实现: ```python insert_query = """ INSERT INTO users (name, age) VALUES (%s, %s); """ data_to_insert = ('John Doe', 30) try: cursor.execute(insert_query, data_to_insert) connection.commit() # 提交事务以保存更改 except Exception as e: connection.rollback() # 如果发生错误则回滚 finally: print(f"{cursor.rowcount} record inserted.") ``` 这段脚本尝试将一条新用户信息加入到 `users` 表中[^2]。 #### 更新现有数据 更新特定条件下的某些字段值可通过 UPDATE SET 来完成: ```python update_query = "UPDATE users SET age=%s WHERE name=%s;" new_data = (35, 'John Doe') try: cursor.execute(update_query, new_data) connection.commit() except Exception as e: connection.rollback() finally: print(f"{cursor.rowcount} records updated.") ``` 这里修改名为 John Doe 的用户的年龄为 35。 #### 删除记录 删除满足一定条件下的一行或多行可利用 DELETE FROM 语句: ```python delete_query = "DELETE FROM users WHERE id=%s;" id_to_delete = (1,) # 需要被移除的数据ID try: cursor.execute(delete_query, id_to_delete) connection.commit() except Exception as e: connection.rollback() finally: print(f"{cursor.rowcount} record(s) deleted.") ``` 上述例子展示了怎样安全地从 `users` 表里删去 ID 为 1 的那条记录。 最后,在所有的数据库交互完成后应当记得关闭游标和断开连接: ```python cursor.close() connection.close() ``` 这有助于释放资源并保持良好的编程习惯。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值