#转载请联系

在写内容之前,先放一张图,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交互的方式很简单,但是有一个大坑一定要注意,不然真的老是出错!

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

 import pymysql

 def main():
conn = pymysql.connect(host='localhost',port=3306,user='root',password='xxx',
database='db_jingdong',charset='utf8')
cur = conn.cursor()
item = input("请输入你要查询商品信息的商品id:")
cur.execute('select * from goods where id=%s' % item)
result = cur.fetchall()
print(result) if __name__ == '__main__':
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. POJ 2135 Farm Tour(最小费用最大流)

    Description When FJ's friends visit him on the farm, he likes to show them around. His farm comprise ...

  2. DP入门(4)——线性结构上的动态规划

    一.最长上升子序列(LIS) 给定n个整数A1,A2,…,An,按从左到右的顺序选出尽量多的整数,组成一个上升子序列(子序列可以理解为:删除0个或多个数,其他数的顺序不变).例如序列1,6,2,3,7 ...

  3. python基础之删除文件及删除目录的方法

    下面来看一下python里面是如何删除一个文件及文件夹的~~ 1 2 3 4 5 6 7 8 #首先引入OS模块 import os #删除文件:  os.remove() #删除空目录:  os.r ...

  4. 软工实践Beta冲刺(4/7)

    队名:起床一起肝活队 组长博客:博客链接 作业博客:班级博客本次作业的链接 组员情况 组员1(队长):白晨曦 过去两天完成了哪些任务 描述: 1.界面的修改与完善 展示GitHub当日代码/文档签入记 ...

  5. Mybatis学习系列(七)缓存机制

    Mybatis缓存介绍 MyBatis提供一级缓存和二级缓存机制. 一级缓存是Sqlsession级别的缓存,Sqlsession类的实例对象中有一个hashmap用于缓存数据.不同的Sqlsessi ...

  6. 《SQL入门经典》总结

    <SQL入门经典>这本书从考试前就开了个头,一直到前两天才看完,拉的战线也够长的.放假来了,基本上什么内容都不记得了.好不容易看完了,就赶紧总结一下吧! 该书分为两大部分,第一部分是第1~ ...

  7. vim配置入门,到豪华版vim配置

    这几天一直研究vim的配置,许多版本总是不尽如人意,网上确实有许多优秀的文章值得参考,我的博客后面会贴上具有参考价值的博客链接,本文的将手把手教你配置一个功能详尽的vim. 首先你要明白的是linux ...

  8. 一个acm过来人的心得

    刻苦的训练我打算最后稍微提一下.主要说后者:什么是有效地训练? 我想说下我的理解.        很多ACMer入门的时候,都被告知:要多做题,做个500多道就变牛了.其实,这既不是充分条件.也不会是 ...

  9. API网关Kong部署和使用文档

    KONG安装使用说明 系统版本:ubuntu14 1.下载安装包 $ wget https://github.com/Mashape/kong/releases/download/0.8.3/kong ...

  10. Codeforces Round #520 (Div. 2) C. Banh-mi

    C. Banh-mi time limit per test:1 second memory limit per test:256 megabytes 题目链接:https://codeforc.es ...