• Python与Mysql交互


    #转载请联系

    在写内容之前,先放一张图,bling~

    这张图算是比较详细的表达出了web开发都需要什么。用户访问网页,就是访问服务器的网页文件。这些网页文件由前端工程师编写的。服务器通常用nginx/apache(LNMP/LAMP)。这时候,用户能浏览到页面了。当用户需要登录时,肯定要核对用户名密码正不正确呀。这时候,服务器会把数据传输给web框架了,就是我们的python应用程序。python应用程序和mysql数据库进行通信,查询一下这个用户的用户名和密码,再对比一下服务器传来的。两者一致,就可以登录啦。所以,python在web全过程中充当着处理数据的作用。

    既然是处理数据,那么与数据库的通信是必不可少的了。现在就开始了解下他们怎么实现通信。

    1.安装pymysql模块

    2.pymysql的使用

    • import pymysql
    • 创建connection连接对象
    conn = pymysql.connection(host='localhost',user='xxx',password='xxx',database='xxx',port=xxx,charset='utf8')
    • 取得cursor游标对象
    cur = conn.cursor()  # 取得的是元组游标
    cur = conn.cursor(cursor=pymysql.cursors.DictCursor)  # 拓展!取得的是字典游标
    • 通过cursor游标执行sql命令
    affect_rows = cur.execute('sql语句')
    # 执行SQL语句,返回受影响的行数
    # affect_rows是受影响的行数,一个数
    • 通过cursor游标取得执行结果
    result = cur.fetchall()
    print(result)
    # cur.fetchone()返回一个元组,形如(1,'妲己',18) # cur.fetchall()获取结果集的所有行,一行构成一个元组,再将这些元组装入一个元组返回,形如((1,'公孙离',20),(2,'妲己',18))
    # 注意:用fetchone抓取一条数据后,再用fetchall抓取数据,是从第二条开始抓取,抓取剩余的全部
    • 如果是对数据库的增删改,还有提交这一步骤。
    conn.commit()
    • 关闭游标cursor
    cur.close()
    • 关闭连接
    conn.close()

    python与mysql交互的方式很简单,但是有一个大坑一定要注意,不然真的老是出错!

    通过一个程序来看下这个坑!

     1 import pymysql
     2 
     3 
     4 def main():
     5     conn = pymysql.connect(host='localhost',port=3306,user='root',password='xxx',
     6                            database='db_jingdong',charset='utf8')
     7     cur = conn.cursor()
     8     item = input("请输入你要查询商品信息的商品id:")
     9     cur.execute('select * from goods where id=%s' % item)
    10     result = cur.fetchall()
    11     print(result)
    12 
    13 
    14 if __name__ == '__main__':
    15     main()

    看第9行!

    item是input获取的,所以是字符串。字符串在python中输出都是带 " " 的。但是!他在第9行插进 sql 语句时,不会把 " " 带进去,只带自己的值。所以他在 sql 语句中是一个整数!

    所以,当我们的 sql 语句需要 " " 时,一定要写,字符串的 " " 是带不进去的!

    说在最后,其实这篇文章的操作还有不足之处。就是恶意的人会通过input输入其他内容,就可以获取数据库的其他内容!

    原理是什么?怎么避免?请看我的这一篇博文:https://www.cnblogs.com/chichung/p/9596716.html

  • 相关阅读:
    JavaScript之正则表达式
    BOM之本地数据存储
    BOM之定时器
    BOM之window核心模块
    BOM简介
    DOM之元素定位
    DOM之事件
    DOM之节点操作
    DOM简介
    linux机制
  • 原文地址:https://www.cnblogs.com/chichung/p/9594354.html
Copyright © 2020-2023  润新知