49 Python连接MySQL数据库

使用原生SQL语句进行操作

首先要通过pymysql进行数据库的链接

import pymysql
conn = pymysql.connect(host='127.0.0.1',port=3306,user='root',password='****',database='classsystem') # 创建链接
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor) // 创建游标,指向数据库中的数据。
sql = 'select * from *****'	// 要执行的SQL语句

下面是对表进行数据的操作。

  1. 查询操作

    import pymysql
    conn = pymysql.connect(host='127.0.0.1',port=3306,user='root',password='****',database='classsystem') # 创建链接
    cursor = conn.cursor(cursor=pymysql.cursors.DictCursor) # 创建游标,并返回一个字典格式的数据
    sql = "select * from user_info where username=%s and pwd=%s;"
    cursor.execute(sql,(username,pwd))  # 执行SQL,返回受影响行数,使用这种方式可以防止SQL注入
    //class_list = cursor.fetchone() # 获取上一步corsor得到的数据中的第一条数据。
    class_list = cursor.fetchall()	# 获取上一步corsor获取到的所有的数据
    cursor.close()
    conn.close()
    
  2. 添加操作

    username = input('username:')
    pwd = input('pwd:')
    sql = "insert into user_info(username,pwd) values(%s,%s);"
    ret = cur.execute(sql, (username, pwd))
    // 批量插入
    // val = [
    //   ('Google', 'https://www.google.com'),
    //   ('Github', 'https://www.github.com'),
    //   ('Taobao', 'https://www.taobao.com'),
    //   ('stackoverflow', 'https://www.stackoverflow.com/')
    // ]
    // sql = "INSERT INTO sites (name, url) VALUES (%s, %s)"
    // mycursor.executemany(sql, val)	// 房主SQL注入
    conn.commit()	# 必须有提交这一步
    
    if ret:
        print(ret)
        print('插入成功')
    else:
        print('插入失败')
    cur.close()
    conn.close()
    
  3. 删除操作
    注意防止SQL注入攻击

    import pymysql
    conn = pymysql.connect(host='127.0.0.1',port=3306,user='root',password='****',database='classsystem') # 创建链接
    cursor = conn.cursor(cursor=pymysql.cursors.DictCursor) 
    sql = "DELETE FROM sites WHERE name = 'stackoverflow'"
    mycursor.execute(sql)	// 有可能被SQL注入
    mydb.commit()
    print(mycursor.rowcount, " 条记录删除")
    
    import pymysql
    conn = pymysql.connect(host='127.0.0.1',port=3306,user='root',password='****',database='classsystem') # 创建链接
    cursor = conn.cursor(cursor=pymysql.cursors.DictCursor) 
    sql = "DELETE FROM sites WHERE name = 'stackoverflow'"
    na = ("stackoverflow", )
    mycursor.execute(sql, na) // Django后台会防止SQL注入
    mydb.commit()
    print(mycursor.rowcount, " 条记录删除")
    
  4. 更新操作

    import pymysql
    conn = pymysql.connect(host='127.0.0.1',port=3306,user='root',password='****',database='classsystem') # 创建链接
    cursor = conn.cursor(cursor=pymysql.cursors.DictCursor) 
    sql = "UPDATE sites SET name = %s WHERE name = %s"
    val = ("Zhihu", "ZH")
    mycursor.execute(sql, na) // Django后台会防止SQL注入
    mydb.commit()
    print(mycursor.rowcount, " 条记录删除")
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值