一、缘由

  这是之前学习的时候写下的基础代码,包含着MySQL数据库和Python交互的基本操作。

二、代码展示

  1. import pymysql
  2.  
  3. '''
  4. 1、数据库的链接和创建视图
  5. '''
  6. # db=pymysql.connect(host='localhost',user='root',password='caomengqi',port=3306)
  7. # cursor=db.cursor()
  8. # cursor.execute("SELECT VERSION()")
  9. # data=cursor.fetchone()
  10. # print('Database version:',data)
  11. # # cursor.execute("CREATE DATABASE spiders DEFAULT CHARACTER SET utf8")
  12. # db.close()
  13.  
  14. '''
  15. 2、数据库的链接和创建表格
  16. '''
  17. # db=pymysql.connect(host='localhost',user='root',password='caomengqi',port=3306,db='spiders')
  18. # cursor=db.cursor()
  19. # sql="CREATE TABLE IF NOT EXISTS students " \
  20. # "(id VARCHAR(255) NOT NULL,name VARCHAR(255) NOT NULL,age INT NOT NULL, PRIMARY KEY (id))"
  21. # cursor.execute(sql)
  22. # db.close()
  23.  
  24. '''
  25. 3、数据库插入数据
  26. '''
  27. # id='20210001'
  28. # user='Bob'
  29. # age=20
  30. #
  31. #
  32. # db=pymysql.connect(host='localhost',user='root',password='caomengqi',port=3306,db='spiders')
  33. # cursor=db.cursor()
  34. # sql="INSERT INTO students(id,name,age) values(%s,%s,%S)"
  35. # try:
  36. # cursor.execute(sql,(id,user,age))
  37. # db.commit()
  38. # except:
  39. # db.rollback()
  40. # db.close()
  41.  
  42. '''
  43. 4、#数据库的更新
  44. '''
  45. #
  46. # db=pymysql.connect(host='localhost',user='root',password='caomengqi',port=3306,db='spiders')
  47. # cursor=db.cursor()
  48. #
  49. # sql="UPDATA students SET age=%s name=%s"
  50. #
  51. # try:
  52. # cursor.excute(sql,(25,"Bob"))
  53. # db.commit()
  54. # print("更新成功")
  55. # except:
  56. # db.rollback()
  57. # db.close()
  58.  
  59. # 构造字典进行读写
  60. # 链接数据库表
  61. db=pymysql.connect(host="localhost",user="root",password="caomengqi",port=3306,db="spiders")
  62. cursor=db.cursor()
  63. #构造通用的储存格式
  64. table="students"
  65. data={
  66. "id":"20210006",
  67. "name":"Bojm",
  68. "age":24
  69. }
  70. keys=",".join(i for i in data)
  71. value=",".join(["%s"]*len(data))
  72. update=",".join(["{key}=%s".format(key=key) for key in data])
  73. #书写SQL语句 on条件为假执行左边的语句,条件为真执行右边的语句
  74. sql='INSERT INTO {table}({keys}) VALUES ({value}) ON DUPLICATE KEY UPDATE '.format(table=table,keys=keys,value=value)
  75. sql+=update
  76. print(sql)
  77. #执行SQL语句
  78. try:
  79. cursor.execute(sql,tuple(data.values())*2)
  80. db.commit()
  81. print(data,"已录入数据库")
  82. except:
  83. print("Faild")
  84. db.rollback()
  85. db.close()
  86.  
  87. '''
  88. 5、数据库的删除
  89. '''
  90. db=pymysql.connect(host='localhost',user='root',password='caomengqi',port=3306,db='spiders')
  91. cursor=db.cursor()
  92.  
  93. table="students"
  94. condtion="age<23"
  95. sql='DELETE FROM {table} WHERE {condtion}'.format(table=table,condtion=condtion)
  96. print(sql)
  97. try:
  98. cursor.execute(sql)
  99. print("成功删除满足",condtion,"的信息")
  100. db.commit()
  101. except:
  102. db.rollback()
  103. print("删除失败")
  104.  
  105. '''
  106. 6、查询数据库
  107. '''
  108. sql="SELECT * FROM {table}".format(table=table)
  109. # try:
  110. cursor.execute(sql)
  111. print("cursor:",cursor.rowcount)
  112. one=cursor.fetchone()
  113. print("cursor One:",one)
  114. all=cursor.fetchall()
  115. print("cursor all:",all)
  116. # except:
  117. # print("Error")

三、特别注意

  1、SQL注入攻击

  1. import mysql.connector
  2. config={
  3. "host":"localhost",
  4. 'port':3306,
  5. 'user':'root',
  6. 'password':'caomengqi',
  7. 'database':'test'
  8. }
  9. con=mysql.connector.connect(**config)
  10. id='1 OR 1=1'
  11. sql="SELECT COUNT(*) FROM student WHERE id="+id;
  12. cursor=con.cursor()
  13. cursor.execute(sql)
  14. print(cursor.fetchone()[0])
  15. con.close()

  2、事务控制

  1. import mysql.connector
  2. try:
  3. con=mysql.connector.connect(
  4. host='localhost',
  5. port=3306,
  6. user='root',
  7. password='caomengqi',
  8. database='test')
  9. con.start_transaction()
  10. cursor=con.cursor()
  11. sql="INSERT INTO student(id,name,sex,birthday,TEL) " \
  12. "VALUE(%s,%s,%s,%s,%s)"
  13. cursor.execute(sql,(2,'赵娜','女','1998-10-03','12345678123'))
  14. con.commit()
  15. except Exception as e:
  16. con.rollback()
  17. print(e)
  18. finally:
  19. if 'con' in dir():
  20. con.close()

  3、数据库的链接

  1. import mysql.connector
  2. con=mysql.connector.connect(
  3. host='localhost',port='3306',
  4. user='root',password='caomengqi',
  5. database='test'
  6. )
  7. cursor=con.cursor()
  8. sql='SELECT name,sex,TEL FROM student;'
  9. cursor.execute(sql)
  10. for one in cursor:
  11. print(one[0],one[1],one[2])
  12. con.close()

  4、数据库链接池

  1. #encoding:utf-8
  2. import mysql.connector.pooling
  3.  
  4. config={
  5. "host":"localhost",
  6. "port":3306,
  7. "user":"root",
  8. "password":"caomengqi",
  9. "database":"test"
  10. }
  11. try:
  12. pool=mysql.connector.pooling.MySQLConnectionPool(
  13. **config,pool_size=10
  14. )
  15. con=pool.get_connection()
  16. con.start_transaction()
  17. cursor=con.cursor()
  18. sql='UPDATE student SET TEL=TEL+1'
  19. cursor.execute(sql)
  20. con.commit()
  21. except Exception as e:
  22. if "con" in dir():
  23. con.rollback()
  24. print(e)

MySQL数据库和Python的交互的更多相关文章

  1. MySQL数据库与python交互

    1.安装引入模块 安装mysql模块 pip install PyMySQL; 文件中引入模块 import pymysql 2.认识Connection对象 用于建立与数据库的连接 创建对象:调用c ...

  2. Redis数据库与python的交互

    1.安装redis模块:pip install redis 2.安装好以后主要使用redis模块中的StrictRedis对象,用于连接redis服务器 3.代码如下: from redis impo ...

  3. python在windows下连接mysql数据库

    一,安装MySQL-python python 连接mysql数据库需要 Python interface to Mysql包,包名为 MySQL-python ,PyPI上现在到了1.2.5版本.M ...

  4. django新建项目,连接mysql数据库

    安装django,进入Django目录,运行 python setup.py install 在workplace目录下新建一个名为site01的项目: cd workplacedjango-admi ...

  5. Django2.2使用mysql数据库pymysql版本不匹配问题的解决过程与总结

    前置条件 django版本:2.2.1 python版本:3.6.6 mysql版本:mysql-community8.0.15 问题 在搭建django项目,配置mysql数据库时遇到无法迁移数据库 ...

  6. python中web应用与mysql数据库交互

    7使用数据库 具体使用python的DB-API,这一章里介绍如何编写代码与MYSQL数据库技术交互,这里使用一个通用的数据库API,名为DB-API. 7.1基于数据库的web应用 之前我们把日志数 ...

  7. python数据库-MySQL与python的交互

    一.python3中安装PyMySQL模块 命令安装: sudo apt-get install python-mysql 或者 pip install pymysql 2.使用在pyCharm中安装 ...

  8. python【第十二篇下】操作MySQL数据库以及ORM之 sqlalchemy

    内容一览: 1.Python操作MySQL数据库 2.ORM sqlalchemy学习 1.Python操作MySQL数据库 2. ORM sqlachemy 2.1 ORM简介 对象关系映射(英语: ...

  9. 在python中配置MySQL数据库

    MySQL数据库(1) 尽管用文件形式将数据保存到磁盘,已经是一种不错的方式.但是,人们还是发明了更具有格式化特点,并且写入和读取更快速便捷的东西——数据库(如果阅读港台的资料,它们称之为“资料库”) ...

  10. Redis数据库的学习及与python的交互

    1. 数据库简介: 当前主要使用两种类型的数据库:关系型数据库(RDBMS).非关系型数据库(NoSQL); (1). 关系型数据库RDBMS: 是建立在关系模型基础上的数据库,借助于集合代数等数学概 ...

随机推荐

  1. 使用Metricbeat监控zookeeper遇到的问题

    1.metricbeat中启动自动加载模块 metricbeat.config.modules: path: ${path.config}/modules.d/*.yml reload.enabled ...

  2. docker -v 和Dockerfile 中VOLUME 区别

    在学习Dockerfile的过程中有个VOLUME命令,很多教程或书中说的是用来定义匿名卷的,其作用如下: 容器运行时应该尽量保持容器存储层不发生写操作,对于数据库类需要保存动态数据的应用,其数据库文 ...

  3. Logstash & 索引生命周期管理(ILM)

    Grok语法 Grok是通过模式匹配的方式来识别日志中的数据,可以把Grok插件简单理解为升级版本的正则表达式.它拥有更多的模式,默认,Logstash拥有120个模式.如果这些模式不满足我们解析日志 ...

  4. secureCRT登录ubuntu 报错:`No compatible key-exchange method. The server supports these methods: diffie-hellman`

    在VMware虚拟机中安装好ubuntu 20.04,已安装并启动sshd,但是使用secureCRT远程登录时则报错: Key exchange failed. No compatible key- ...

  5. 移动端touch拖动事件和click事件冲突问题解决

    通过一个悬浮球交互功能的案例来阐述问题,以及解决办法. 实现效果 类似微信里的悬浮窗效果,苹果手机的悬浮球功能效果 可以点击拖动,然后吸附在窗口边缘 点击悬浮球,可以跳转界面,或者更改悬浮球的形态 准 ...

  6. aws-s3-国际global与国内CN的一些说明

    S3云存储国际版最近经常被墙,国内部分地区有时能正常上传下载,有时也会直接报错网络错误等信息, 所以建议S3使用国内AWS的.国内S3与国外S3在使用时需要注意以下几点: 1)URL不通用 国际版的S ...

  7. SSM整合以及相关补充

    SSM整合以及相关补充 我们在前面已经学习了Maven基本入门,Spring,SpringMVC,MyBatis三件套 现在我们来通过一些简单的案例,将我们最常用的开发三件套整合起来,进行一次完整的项 ...

  8. Python解决千年虫问题

    #避免千年虫(日期bug)问题 千年虫:部分计算机程序使用年份后两位作为记录年份,当日期跳转到00时候,默认会解析为1900,造成系统紊乱 lst=[45,89,1998,00,75,33,1968, ...

  9. Linux Block模块之IO合并代码解析

    1 IO路径 从内核角度看,进程产生的IO路径主要有三条: 缓存IO:系统绝大部分IO走的这种形式,充分利用文件系统层的page cache所带来的优势.应用程序产生的IO经系统调用落入page ca ...

  10. Codeforces Round #804 (Div. 2) C(组合 + mex)

    Codeforces Round #804 (Div. 2) C(组合 + mex) 本萌新的第一篇题解qwq 题目链接: 传送门QAQ 题意: 给定一个\(\left [0,n-1 \right ] ...