python操作mysql

一, 数据库的安装和连接

PyMySQL的安装:

pip install PyMySQL

python连接数据库:

import pymysql

db = pymysql.connect("数据库ip","用户","密码","数据库" ) # 打开数据库连接

cursor.execute("SELECT VERSION()") # 使用 execute() 方法执行 SQL 查询

data = cursor.fetchone() # 使用 fetchone() 方法获取单条数据

print ("Database version : %s " % data)

db.close() # 关闭数据库连接

# 其他参数

import pymysql

conn = pymysql.connect(

host='localhost', user='root', password="root",

database='db', port=3306, charset='utf-8',

)

cur = conn.cursor(cursor=pymysql.cursors.DictCursor)

二, 创建表操作

import pymysql

# 打开数据库连接

db = pymysql.connect("localhost","testuser","test123","TESTDB" )

# 使用 cursor() 方法创建一个游标对象 cursor

cursor = db.cursor()

# 使用 execute() 方法执行 SQL,如果表存在则删除

cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")

# 使用预处理语句创建表

sql = """CREATE TABLE EMPLOYEE (

FIRST_NAME CHAR(20) NOT NULL,

LAST_NAME CHAR(20),

AGE INT,

SEX CHAR(1),

INCOME FLOAT )"""

cursor.execute(sql)

# 关闭数据库连接

db.close()

三, 操作数据

一, 插入操作

import pymysql

# 打开数据库连接

db = pymysql.connect("localhost","testuser","test123","TESTDB" )

# 使用cursor()方法获取操作游标

cursor = db.cursor()

# SQL 插入语句

sql = """INSERT INTO EMPLOYEE(FIRST_NAME,

LAST_NAME, AGE, SEX, INCOME)

VALUES ('Mac', 'Mohan', 20, 'M', 2000)"""

try:

cursor.execute(sql) # 执行sql语句

db.commit() # 提交到数据库执行

except:

db.rollback() # 如果发生错误则回滚

# 关闭数据库连接

db.close()

# 注意: 不要自己进行SQL命令的字符串拼接,会产生SQL注入问题

import pymysql

# 打开数据库连接

db = pymysql.connect("localhost","testuser","test123","TESTDB" )

# 使用cursor()方法获取操作游标

cursor = db.cursor()

# SQL 插入语句

sql = "INSERT INTO EMPLOYEE(FIRST_NAME, \

LAST_NAME, AGE, SEX, INCOME) \

VALUES (%s, %s, %s, %s, %s )" % \

('Mac', 'Mohan', 20, 'M', 2000)

try:

cursor.execute(sql) # 执行sql语句

db.commit() # 执行sql语句

except:

db.rollback() # 发生错误时回滚

# 关闭数据库连接

db.close()

二, 查询操作

Python查询Mysql使用 fetchone() 方法获取单条数据, 使用fetchall() 方法获取多条数据。

fetchone(): 该方法获取下一个查询结果集。结果集是一个对象

fetchall(): 接收全部的返回结果行.

rowcount: 这是一个只读属性,并返回执行execute()方法后影响的行数。

import pymysql

# 打开数据库连接

db = pymysql.connect("localhost","testuser","test123","TESTDB" )

# 使用cursor()方法获取操作游标

cursor = db.cursor()

# SQL 查询语句

sql = "SELECT * FROM EMPLOYEE \

WHERE INCOME > %s" % (1000)

try:

cursor.execute(sql)# 执行SQL语句

results = cursor.fetchall()# 获取所有记录列表

for row in results:

fname = row[0]

lname = row[1]

age = row[2]

sex = row[3]

income = row[4]

# 打印结果

print ("fname=%s,lname=%s,age=%s,sex=%s,income=%s" % \

(fname, lname, age, sex, income ))

except:

print ("Error: unable to fetch data")

# 关闭数据库连接

db.close()

三, 更新操作

import pymysql

# 打开数据库连接

db = pymysql.connect("localhost","testuser","test123","TESTDB" )

# 使用cursor()方法获取操作游标

cursor = db.cursor()

# SQL 更新语句

sql = "UPDATE EMPLOYEE SET AGE = AGE + 1 WHERE SEX = '%c'" % ('M')

try:

cursor.execute(sql) # 执行SQL语句

db.commit() # 提交到数据库执行

except

db.rollback() # 发生错误时回滚

# 关闭数据库连接

db.close()

四, 删除操作

import pymysql

# 打开数据库连接

db = pymysql.connect("localhost","testuser","test123","TESTDB" )

# 使用cursor()方法获取操作游标

cursor = db.cursor()

# SQL 删除语句

sql = "DELETE FROM EMPLOYEE WHERE AGE > %s" % (20)

try

cursor.execute(sql) # 执行SQL语句

db.commit() # 提交修改

except

db.rollback() # 发生错误时回滚# 关闭连接

db.close()

四, SQL注入问题

注意: 不要自己进行SQL命令字符串拼接,而是交给pymysql去做

# 如下代码,会造成可以在不知道账号和密码的情况下查询

import pymysql

conn = pymysql.connect(host='127.0.0.1', user='root', password="123",database='ceshi')

cur = conn.cursor()

user = "akhksh' or 1=1 ;-- "

password = '*******'

sql = "select * from userinfo where username = %s and password =%s;" % (user, password)

cur.execute(sql)

ret = cur.fetchone()

cur.close()

conn.close()

# 而使用pymysql的execute()方法自动拼接,不会出现此类问题

import pymysql

conn = pymysql.connect(host='127.0.0.1', user='root', password="123", database='ceshi')

cur = conn.cursor()

user = "akhksh' or 1=1 ;-- "

password = '*******'

sql = "select * from userinfo where username = %s and password =%s;"

cur.execute(sql, (user, password))

ret = cur.fetchone()

cur.close()

conn.close()

python清除数据库表命令_数据库----Python操作数据库相关推荐

  1. python数据库迁移命令_创建和进行数据库迁移,同步数据库

    模型(model)建好后,django可以根据这个模型(model)在数据库中创建一张数据表格. Django自带一个数据库迁移(migration)系统来跟踪对模型(models)的修改,然后同步到 ...

  2. mysql 数据库安装命令_教你MySQL数据库的编译安装以及命令详解(5.7版本)

    一.安装MySQL所需的环境依赖包 [root@localhost opt]# yum -y install gcc gcc-c++ make ncurses ncurses-devel bison ...

  3. python网页提交表单_使用Python中的POST请求通过网站表单上传基本文件

    我尝试使用Python和HTTP请求在一个随机的网站上上传一个文件.为此,我使用名为Requests的便利库. 根据the documentation,以及StackOverflow here和the ...

  4. python登录交换机执行命令_利用Python脚本登录交换机实现自动配置备份的方法

    主机参考:服务器测评参考推荐网,专注分享服务器优惠信息!如果您想在本站投放您的广告,点此直达!如果您不想付费,您也可以免费投稿您的产品信息,点此直达!联系我们 部分文章发布时间较久远,可能存在未知因素 ...

  5. python网页提交表单_用Python的urllib库提交WEB表单

    class EntryDemo( Frame ): """Demonstrate Entrys and Event binding""" c ...

  6. python怎么导入sql数据库,##使用python将excel表中数据导入sql server数据库

    如何用python将excel数据导入到postgresql数据库中 把excel表格另存为csv文件 python将exce文件含有多个sheet同时l导入sqlserver数据库 需要使用xlrd ...

  7. python如何读取文件数据恢复_删python目录

    Python学习笔记 (1)Hello World(环境搭建+输出Hello World!) 随想 高考发挥失常.科三遇火车发挥失常,各种不顺--突然发现假期都快没了,才想起高考前想象的这个假期要做的 ...

  8. Python语言学习:python编程之pip命令集合、python调式、头部代码、代码运行等常见概念详细攻略(解决问题为导向)

    Python语言学习:python编程之pip命令集合.python调式.头部代码.代码运行等常见概念详细攻略(解决问题为导向) 目录 一.pip命令集合 1.pip常规命令 1.1  pip下载se ...

  9. python权限不够无法写入_解决python使用pip安装模块的权限问题

    ubuntu16.04下默认的python和pip 1.ubuntu16.04默认安装了两个版本的python,python2.7和python3.5,可以使用python -V查看版本 命令行中py ...

  10. 数据库应用——MySQL基础知识和操作数据库

    这里写目录标题 初识MySQL 什么是数据库 数据库分类 MySQL简介 安装MYSQL win10安装 安装SQLyog 连接数据库 linux安装 使用Navicat Premium连接数据库 操 ...

最新文章

  1. Android入门第八篇之GridView(九宫图)
  2. jittor和pytorch生成网络对比之wgan_div
  3. 找到IIS Express配置/配置数据库文件在哪里?
  4. 弹性理论法研究桩基受力计算公式_收藏!桩基检测的7种方法
  5. 圆柱体积怎么算立方公式_【六年级数学微课】巧算圆锥的体积
  6. flutter创建可移动的stack小部件
  7. python paramiko sftp_python paramiko (ssh,sftp)
  8. java 随机数种子_Java--随机数和随机数种子(转)
  9. 安徽省计算机水平考试试卷,第1次安徽省计算机水平考试试卷.doc
  10. php计划任务 框架,计划任务的使用 ThinkCMF内容管理框架,做最简约的ThinkPHP开源软件...
  11. STM32之RTT调试
  12. 数学图形(2.1)三叶结
  13. mybatis自定义插件
  14. html5 斗鱼 苹果,斗鱼ios端——手游直播开播指导
  15. 【学习笔记】Stern-Brocot Tree
  16. 正海转债,寿22转债,东材转债上市价格预测
  17. 桌面计算机图标无响应,win7系统电脑鼠标点击桌面图标没反应怎么办【图文】...
  18. 用js函数判断一个数是否为素数
  19. 电脑如何通过数据线连接手机网络?(USB共享网络)
  20. 牛奶可乐经济学之Q7:为什么官僚们喜欢使用语焉不详的句子?

热门文章

  1. python 3.X中打包二进制数据存储字符串出错原因分析
  2. Linux下更改目录及其下的子目录和文件的访问权限
  3. ErrorPageRegistrar根据不同的错误类型显示网页
  4. SpringBoot 集成 Caffeine、Redis实现双重缓存方式(二)
  5. Java 注解Annotation总结二
  6. MySQL中的时间函数
  7. MySQL完全自学手册
  8. Java中字符串的拼接和转义
  9. WLC5520无法通过无线客户端进行网管故障解决
  10. 微信公众平台开发视频教程