一、缘由

  这是之前学习的时候写下的基础代码,包含着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的交互的更多相关文章

  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. KVM里安装不是原装的winxp系统镜像

    从网上下载的winxp系统镜像,虽然是iso格式的,但是里面的内容是如下情况的 因此安装的话,需要采取如下步骤 1.添加一个光驱引导,挂载一个iso格式的pe 2.再添加一个光驱,挂载iso格式的wi ...

  2. Elasticsearch Dockerfile 例子

    文章转载自:https://elasticstack.blog.csdn.net/article/details/111692444 前提条件 在继续执行本教程中概述的步骤之前,你需要具备一个关键的先 ...

  3. linux系统安装Confluence

    转载网址:https://blog.yupaits.com/blog/record/linux-confluence.html#安装步骤 Confluence简介 Confluence是一个专业的企业 ...

  4. 0-mysql数据库下载及安装

    1 下载mysql源安装包 wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm 2 安装mysql源 yu ...

  5. 工业互联网领域的企业,都已经接入了ERP或者MES系统了吗?

    肯定不是得啊!之前的两化,后来的企业上云,到当下的智能制造.数字化转型,不都是想把制造业(也就是你说的工业互联网企业)往这个方向推么,ERP和MES是企业数字化的一部分,但不是全部,当然有的企业(小工 ...

  6. Tubian系统无法打开Android子系统的解决方法

    打开Konsole,Konsole在程序菜单(左下角Logo)-系统中 输入: sudo nano /var/lib/waydroid/waydroid.cfg 回车 按方向键,把光标移动到[prop ...

  7. vscode markdown WYSIWYG 所见即所得编辑和预览

    一直使用Typora编写markdown,随着vscode在工作中使用的越来越多,产生了一个想法:能不能在vscode中写markdown,减少软件的成本? 可是vscode官方自带的的markdow ...

  8. 挑战海量数据:基于Apache DolphinScheduler对千亿级数据应用实践

    点亮 ️ Star · 照亮开源之路 GitHub:https://github.com/apache/dolphinscheduler 精彩回顾 近期,初灵科技的大数据开发工程师钟霈合在社区活动的线 ...

  9. 动态搜索图书:可以按书名、作者、出版社以及价格范围进行搜索。(在IDEA中mybatis)

    中午找了好久.好多人写的都驴头不对马嘴.自己实现后.才发现是真的不麻烦.也不知道人家咋想的.写的死麻烦还没用.老是搜出sql语句写死的.我要的是动态滴.自己写出后.总结了一下 1.按照书名.作者.出版 ...

  10. java程序员在交接别人的工作时如何保证顺利交接?

    序言 各位好啊,我是会编程的蜗牛,作为java开发者,尤其是在职场混迹了多年的老手,肯定会遇到同事离职的情况,或者自己跳槽的情况,这些都免不了需要做好交接工作,不管是别人交接给我们,还是我们交接给别人 ...