#转载请联系

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

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

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

1.安装pymysql模块

2.pymysql的使用

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

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

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

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

看第9行!

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

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

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

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

Python与Mysql交互的更多相关文章

  1. 二十、Python与Mysql交互

    先安装一个python与MySQL交互的包:MySQL-python $ gunzip MySQL-python-1.2.2.tar.gz $ tar -xvf MySQL-python-1.2.2. ...

  2. MySQL之Python与Mysql交互

    一:Python操作MySQL步骤 1:Python中操作MySQL的步骤 2.引入模块 在.py文件中引入pymysql模块 import pymysql pymysql是python的一个第三方与 ...

  3. python与mysql交互中的各种坑

    开始学python 交互MySQLdb,踩了很多坑 第一个 %d format: a number is required, not str 参照以下博客: https://blog.csdn.net ...

  4. python与MySQL

    一.python与mysql交互 因版本不同python操作mysql有两个模块,python3不再支持MySQL-python,模块使用都一样: python2.7:MySQL-python pyt ...

  5. 前端和后端的数据交互(jquery ajax+python flask+mysql)

    上web课的时候老师布置的一个实验,要求省市连动,基本要求如下: 1.用select选中一个省份. 2.省份数据传送到服务器,服务器从数据库中搜索对应城市信息. 3.将城市信息返回客户,客户用sele ...

  6. 第一节、Alex 讲解 python+mysql 交互;

    Python Mysql 交互 A.Alex 的语法展示: import MySQLdb  try:      conn=MySQL.connect(host='localhost',user='ro ...

  7. MySQL(10) - Python与MySQL的交互

    1.MySQL驱动模块Connector的语法 1.1.下载驱动 进入官网下载对应版本驱动 1.2.创建连接 方式一: import mysql.connector con = mysql.conne ...

  8. Python(九) Python 操作 MySQL 之 pysql 与 SQLAchemy

    本文针对 Python 操作 MySQL 主要使用的两种方式讲解: 原生模块 pymsql ORM框架 SQLAchemy 本章内容: pymsql 执行 sql 增\删\改\查 语句 pymsql ...

  9. Python 操作 MySQL 之 pysql 与 ORM(转载)

    本文针对 Python 操作 MySQL 主要使用的两种方式讲解: 原生模块 pymsql ORM框架 SQLAchemy 本章内容: pymsql 执行 sql 增\删\改\查 语句 pymsql ...

随机推荐

  1. Go基础篇【第1篇】: 内置库模块 OS

    os包提供了操作系统函数的不依赖平台的接口.设计为Unix风格的,虽然错误处理是go风格的:失败的调用会返回错误值而非错误码.通常错误值里包含更多信息.os包的接口规定为在所有操作系统中都是一致的.非 ...

  2. Jboss提示:Server already running on localhost

    最近在做项目中,经常遇到JBoss报如下提示:Server already running on localhost.这时Jboss显示已启动,但页面显示不出来.提示中给出了两种解决办法,运行新的服务 ...

  3. 域名/网站名/URL

    http://mail.163.com/index.html 1)http://:协议,也就是HTTP超文本传输协议,网页在网上传输的协议. 2)mail:服务器名,代表着是一个邮箱服务器,所以是ma ...

  4. SQL 取数值小数后两位,但不四舍五入

    select round('1.67789',2,1) /* 1.67*/

  5. thead tfoot tbody标签的使用

    这三个都是<body>元素的子标签,不常用,因为其只是对<tr>标签做了一个区分 <thread>用于包裹表格头信息 <tfoot>用于包裹表格最后一行 ...

  6. servletContex.getRealPath 获取的是拼接后的地址 是虚假的

    servletContex.getRealPath 获取的是拼接后的地址 是虚假的

  7. [CF475E]Strongly Connected City 2

    题目大意:给一张$n(n\leqslant2000)$个点的无向图,给所有边定向,使定向之后存在最多的有序点对$(a,b)$满足从$a$能到$b$ 题解:先把边双缩点,因为这里面的点一定两两可达. 根 ...

  8. JQuery队列queue与原生模仿其实现

    jQuery中的queue和dequeue是一组很有用的方法,他们对于一系列需要按次序运行的函数特别有用.特别animate动画,ajax,以及timeout等需要一定时间的函数. queue() 方 ...

  9. 如何实现加载DOM时执行js代码

    有一些功能需求,需要在DOM载入时马上执行一些函数,但又不愿意仅为了这一个需求而引入整个JQuery库,于是就把jQuery的方法提取出来,单独使用了. 大家可以使用windows.onload事件, ...

  10. RTL2832U+R820T电视棒windows下安装sdr# 以及搭建ADS-B使用VirtualRadar看飞机的教程

    本文中提到的软件随后我会打包给出下载地址.这篇文章是我根据网上的教程和自己的经验修改的详细版本,为了方便入门新手.先来说说RTL2832U+R820T在windows下安装sdr#的方法.首先科普下s ...