MySQL数据库和Python的交互
一、缘由
这是之前学习的时候写下的基础代码,包含着MySQL数据库和Python交互的基本操作。
二、代码展示
- import pymysql
- '''
- 1、数据库的链接和创建视图
- '''
- # db=pymysql.connect(host='localhost',user='root',password='caomengqi',port=3306)
- # cursor=db.cursor()
- # cursor.execute("SELECT VERSION()")
- # data=cursor.fetchone()
- # print('Database version:',data)
- # # cursor.execute("CREATE DATABASE spiders DEFAULT CHARACTER SET utf8")
- # db.close()
- '''
- 2、数据库的链接和创建表格
- '''
- # db=pymysql.connect(host='localhost',user='root',password='caomengqi',port=3306,db='spiders')
- # cursor=db.cursor()
- # sql="CREATE TABLE IF NOT EXISTS students " \
- # "(id VARCHAR(255) NOT NULL,name VARCHAR(255) NOT NULL,age INT NOT NULL, PRIMARY KEY (id))"
- # cursor.execute(sql)
- # db.close()
- '''
- 3、数据库插入数据
- '''
- # id='20210001'
- # user='Bob'
- # age=20
- #
- #
- # db=pymysql.connect(host='localhost',user='root',password='caomengqi',port=3306,db='spiders')
- # cursor=db.cursor()
- # sql="INSERT INTO students(id,name,age) values(%s,%s,%S)"
- # try:
- # cursor.execute(sql,(id,user,age))
- # db.commit()
- # except:
- # db.rollback()
- # db.close()
- '''
- 4、#数据库的更新
- '''
- #
- # db=pymysql.connect(host='localhost',user='root',password='caomengqi',port=3306,db='spiders')
- # cursor=db.cursor()
- #
- # sql="UPDATA students SET age=%s name=%s"
- #
- # try:
- # cursor.excute(sql,(25,"Bob"))
- # db.commit()
- # print("更新成功")
- # except:
- # db.rollback()
- # db.close()
- # 构造字典进行读写
- # 链接数据库表
- db=pymysql.connect(host="localhost",user="root",password="caomengqi",port=3306,db="spiders")
- cursor=db.cursor()
- #构造通用的储存格式
- table="students"
- data={
- "id":"20210006",
- "name":"Bojm",
- "age":24
- }
- keys=",".join(i for i in data)
- value=",".join(["%s"]*len(data))
- update=",".join(["{key}=%s".format(key=key) for key in data])
- #书写SQL语句 on条件为假执行左边的语句,条件为真执行右边的语句
- sql='INSERT INTO {table}({keys}) VALUES ({value}) ON DUPLICATE KEY UPDATE '.format(table=table,keys=keys,value=value)
- sql+=update
- print(sql)
- #执行SQL语句
- try:
- cursor.execute(sql,tuple(data.values())*2)
- db.commit()
- print(data,"已录入数据库")
- except:
- print("Faild")
- db.rollback()
- db.close()
- '''
- 5、数据库的删除
- '''
- db=pymysql.connect(host='localhost',user='root',password='caomengqi',port=3306,db='spiders')
- cursor=db.cursor()
- table="students"
- condtion="age<23"
- sql='DELETE FROM {table} WHERE {condtion}'.format(table=table,condtion=condtion)
- print(sql)
- try:
- cursor.execute(sql)
- print("成功删除满足",condtion,"的信息")
- db.commit()
- except:
- db.rollback()
- print("删除失败")
- '''
- 6、查询数据库
- '''
- sql="SELECT * FROM {table}".format(table=table)
- # try:
- cursor.execute(sql)
- print("cursor:",cursor.rowcount)
- one=cursor.fetchone()
- print("cursor One:",one)
- all=cursor.fetchall()
- print("cursor all:",all)
- # except:
- # print("Error")
三、特别注意
1、SQL注入攻击
- import mysql.connector
- config={
- "host":"localhost",
- 'port':3306,
- 'user':'root',
- 'password':'caomengqi',
- 'database':'test'
- }
- con=mysql.connector.connect(**config)
- id='1 OR 1=1'
- sql="SELECT COUNT(*) FROM student WHERE id="+id;
- cursor=con.cursor()
- cursor.execute(sql)
- print(cursor.fetchone()[0])
- con.close()
2、事务控制
- import mysql.connector
- try:
- con=mysql.connector.connect(
- host='localhost',
- port=3306,
- user='root',
- password='caomengqi',
- database='test')
- con.start_transaction()
- cursor=con.cursor()
- sql="INSERT INTO student(id,name,sex,birthday,TEL) " \
- "VALUE(%s,%s,%s,%s,%s)"
- cursor.execute(sql,(2,'赵娜','女','1998-10-03','12345678123'))
- con.commit()
- except Exception as e:
- con.rollback()
- print(e)
- finally:
- if 'con' in dir():
- con.close()
3、数据库的链接
- import mysql.connector
- con=mysql.connector.connect(
- host='localhost',port='3306',
- user='root',password='caomengqi',
- database='test'
- )
- cursor=con.cursor()
- sql='SELECT name,sex,TEL FROM student;'
- cursor.execute(sql)
- for one in cursor:
- print(one[0],one[1],one[2])
- con.close()
4、数据库链接池
- #encoding:utf-8
- import mysql.connector.pooling
- config={
- "host":"localhost",
- "port":3306,
- "user":"root",
- "password":"caomengqi",
- "database":"test"
- }
- try:
- pool=mysql.connector.pooling.MySQLConnectionPool(
- **config,pool_size=10
- )
- con=pool.get_connection()
- con.start_transaction()
- cursor=con.cursor()
- sql='UPDATE student SET TEL=TEL+1'
- cursor.execute(sql)
- con.commit()
- except Exception as e:
- if "con" in dir():
- con.rollback()
- print(e)
MySQL数据库和Python的交互的更多相关文章
- MySQL数据库与python交互
1.安装引入模块 安装mysql模块 pip install PyMySQL; 文件中引入模块 import pymysql 2.认识Connection对象 用于建立与数据库的连接 创建对象:调用c ...
- Redis数据库与python的交互
1.安装redis模块:pip install redis 2.安装好以后主要使用redis模块中的StrictRedis对象,用于连接redis服务器 3.代码如下: from redis impo ...
- python在windows下连接mysql数据库
一,安装MySQL-python python 连接mysql数据库需要 Python interface to Mysql包,包名为 MySQL-python ,PyPI上现在到了1.2.5版本.M ...
- django新建项目,连接mysql数据库
安装django,进入Django目录,运行 python setup.py install 在workplace目录下新建一个名为site01的项目: cd workplacedjango-admi ...
- Django2.2使用mysql数据库pymysql版本不匹配问题的解决过程与总结
前置条件 django版本:2.2.1 python版本:3.6.6 mysql版本:mysql-community8.0.15 问题 在搭建django项目,配置mysql数据库时遇到无法迁移数据库 ...
- python中web应用与mysql数据库交互
7使用数据库 具体使用python的DB-API,这一章里介绍如何编写代码与MYSQL数据库技术交互,这里使用一个通用的数据库API,名为DB-API. 7.1基于数据库的web应用 之前我们把日志数 ...
- python数据库-MySQL与python的交互
一.python3中安装PyMySQL模块 命令安装: sudo apt-get install python-mysql 或者 pip install pymysql 2.使用在pyCharm中安装 ...
- python【第十二篇下】操作MySQL数据库以及ORM之 sqlalchemy
内容一览: 1.Python操作MySQL数据库 2.ORM sqlalchemy学习 1.Python操作MySQL数据库 2. ORM sqlachemy 2.1 ORM简介 对象关系映射(英语: ...
- 在python中配置MySQL数据库
MySQL数据库(1) 尽管用文件形式将数据保存到磁盘,已经是一种不错的方式.但是,人们还是发明了更具有格式化特点,并且写入和读取更快速便捷的东西——数据库(如果阅读港台的资料,它们称之为“资料库”) ...
- Redis数据库的学习及与python的交互
1. 数据库简介: 当前主要使用两种类型的数据库:关系型数据库(RDBMS).非关系型数据库(NoSQL); (1). 关系型数据库RDBMS: 是建立在关系模型基础上的数据库,借助于集合代数等数学概 ...
随机推荐
- 使用Metricbeat监控zookeeper遇到的问题
1.metricbeat中启动自动加载模块 metricbeat.config.modules: path: ${path.config}/modules.d/*.yml reload.enabled ...
- docker -v 和Dockerfile 中VOLUME 区别
在学习Dockerfile的过程中有个VOLUME命令,很多教程或书中说的是用来定义匿名卷的,其作用如下: 容器运行时应该尽量保持容器存储层不发生写操作,对于数据库类需要保存动态数据的应用,其数据库文 ...
- Logstash & 索引生命周期管理(ILM)
Grok语法 Grok是通过模式匹配的方式来识别日志中的数据,可以把Grok插件简单理解为升级版本的正则表达式.它拥有更多的模式,默认,Logstash拥有120个模式.如果这些模式不满足我们解析日志 ...
- 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- ...
- 移动端touch拖动事件和click事件冲突问题解决
通过一个悬浮球交互功能的案例来阐述问题,以及解决办法. 实现效果 类似微信里的悬浮窗效果,苹果手机的悬浮球功能效果 可以点击拖动,然后吸附在窗口边缘 点击悬浮球,可以跳转界面,或者更改悬浮球的形态 准 ...
- aws-s3-国际global与国内CN的一些说明
S3云存储国际版最近经常被墙,国内部分地区有时能正常上传下载,有时也会直接报错网络错误等信息, 所以建议S3使用国内AWS的.国内S3与国外S3在使用时需要注意以下几点: 1)URL不通用 国际版的S ...
- SSM整合以及相关补充
SSM整合以及相关补充 我们在前面已经学习了Maven基本入门,Spring,SpringMVC,MyBatis三件套 现在我们来通过一些简单的案例,将我们最常用的开发三件套整合起来,进行一次完整的项 ...
- Python解决千年虫问题
#避免千年虫(日期bug)问题 千年虫:部分计算机程序使用年份后两位作为记录年份,当日期跳转到00时候,默认会解析为1900,造成系统紊乱 lst=[45,89,1998,00,75,33,1968, ...
- Linux Block模块之IO合并代码解析
1 IO路径 从内核角度看,进程产生的IO路径主要有三条: 缓存IO:系统绝大部分IO走的这种形式,充分利用文件系统层的page cache所带来的优势.应用程序产生的IO经系统调用落入page ca ...
- Codeforces Round #804 (Div. 2) C(组合 + mex)
Codeforces Round #804 (Div. 2) C(组合 + mex) 本萌新的第一篇题解qwq 题目链接: 传送门QAQ 题意: 给定一个\(\left [0,n-1 \right ] ...