Python之MySQL数据库增删改查操作

Python之MySQL数据库增删改查操作_第1张图片

Python之MySQL数据库增删改查操作_第2张图片

一.在pycharm2017 上实现python3.6与mysql数据库的连接

与其他的IDE不同,pycharm不需要额外下载mydqldb包等,pycharm里可以自动安装pymysql,功能与下载的mydqldb是一样的。

安装pycharm自带的pymysql

首先打开pycharm里的设置 settings->project->project Interpreter->双击击右面的pip-->在搜索框里输入pymysql-->然后选中版本点击install package,等一会提示successful就行了

 

 

Python之MySQL数据库增删改查操作_第3张图片

安装的过程中可能会出现"ImportError: No module named setuptools"的错误提示,可以先在上面输入框中查找安装setuptools在安装PyMySQL3

Python之MySQL数据库增删改查操作_第4张图片

数据库 MYSQLa

Python之MySQL数据库增删改查操作_第5张图片

Python之MySQL数据库增删改查操作_第6张图片

1.Python之连接数据库

import pymysql

# 获取连接对象conn,建立数据库的连接
def get_conn():
    conn = pymysql.connect(host='localhost',port=3306,user='root',passwd='root',db='school')    
# db:表示数据库名称
#  进行连接数据库服务端(host 访问服务端的ip,user 访问服务端的用户,password访问服务端的用户密码,database 访问服务端的数据库,charset 访问时采用的编码方式)
    return conn

2.Python之插入操作

import pymysql

def get_conn():
    conn = pymysql.connect(host='localhost',port=3306, user='root', passwd='root', db='school')    # db:表示数据库名称
    return conn

def insert(sql):
    conn = get_conn()
    cur = conn.cursor()
    result = cur.execute(sql)
    print(result)
    conn.commit()
    cur.close()
    conn.close()

if __name__ == '__main__':
    sql = "INSERT INTO student VALUES('120','zhang','12');"
    insert(sql)

Python之MySQL数据库增删改查操作_第7张图片

在写sql语句的时候,需要避免直接写sql语句,而是采用占位符的方式来,防止sql的注入。

  • sql占位符形式实现

def insert(sql, args):
    conn = get_conn()
    cur = conn.cursor()
    result = cur.execute(sql, args)
    print(result)
    conn.commit()
    cur.close()
    conn.close()


# 在写sql语句的时候,需要避免直接写sql语句,而是采用占位符的方式来,防止sql的注入。
# sql占位符形式实现
if __name__ == '__main__':
    sql = 'INSERT INTO student VALUES(%s,%s,%s);'
    insert(sql, ('2', 'wang', '10'))

Python之MySQL数据库增删改查操作_第8张图片

下面代码均以占位符的形式实现sql语句。

  • 插入多条语句实现
import pymysql


def get_conn():
    conn = pymysql.connect(host='localhost', port=3306, user='root', passwd='root', db='school')
    return conn

def insert_many(sql, args):
    conn = get_conn()
    cur = conn.cursor()
    result = cur.executemany(query=sql, args=args)
    print(result)
    conn.commit()
    cur.close()
    conn.close()


if __name__ == '__main__':
    sql = 'insert into student VALUES (%s,%s,%s)'
    args = [('003', 'li', '11'), ('004', 'sun', '12'), ('005', 'zhao', '13')]
    insert_many(sql=sql, args=args)
  • Python之MySQL数据库增删改查操作_第9张图片
import pymysql
conn=pymysql.connect(host='localhost',user='root',password='root',database='school')
## 连接mysql数据库并创建句柄 (host连接的机器,user连接的用户,password连接的密=密码,database连接的数据库 )
coursor=conn.cursor()
##创建游标
ste=coursor.execute('insert into student(Sno,Sname,Ssex) VALUES (000,212,11)')
##通过游标执行SQL命令语句
conn.commit()
##进行提交(在对数据库中的内容进行修改时,需要进行提交内容方可进行保存)
coursor.close()
##关闭游标执行操作
conn.close()
##断开连接

Python之MySQL数据库增删改查操作_第10张图片

3.Python之更新操作

import pymysql

def get_conn():
    conn = pymysql.connect(host='localhost',port=3306,user='root',passwd='root',db='school')    # db:表示数据库名称
    return conn

def update(sql,args):
    conn = get_conn()
    cur = conn.cursor()
    result = cur.execute(sql,args)
    print(result)
    conn.commit()
    cur.close()
    conn.close()


if __name__ == '__main__':
    sql = 'UPDATE student SET Sname=%s WHERE Sno = %s;'
    args = ('wangprince', '2')
    update(sql, args)

Python之MySQL数据库增删改查操作_第11张图片Python之MySQL数据库增删改查操作_第12张图片

4.Python之删除操作

import pymysql

def get_conn():
    conn = pymysql.connect(host='localhost',port=3306,user='root',passwd='root',db='school')    # db:表示数据库名称
    return conn

def delete(sql,args):
    conn = get_conn()
    cur = conn.cursor()
    result = cur.execute(sql,args)
    print(result)
    conn.commit()
    cur.close()
    conn.close()


if __name__ == '__main__':
    sql = 'DELETE FROM student WHERE Sno = %s;'
    args = ('2',) # 单个元素的tuple写法
    delete(sql,args)

Python之MySQL数据库增删改查操作_第13张图片Python之MySQL数据库增删改查操作_第14张图片

5.Python之查询操作

import pymysql

def get_conn():
    conn = pymysql.connect(host='localhost', port=3306, user='root', passwd='root', db='school')
    return conn

def query(sql,args):
    conn = get_conn()
    cur = conn.cursor()
    cur.execute(sql,args)
    results = cur.fetchall()
    print(type(results))  # 返回 tuple元组类型

    for row in results:
        print(row)
        id = row[0]
        name = row[1]
        age = row[2]
        print('Sno: ' + str(id) + '  Sname: ' + name + '  Ssex: ')
        pass

    conn.commit()
    cur.close()
    conn.close()


if __name__ == '__main__':
    sql = 'SELECT  * FROM student;'
    query(sql,None)

Python之MySQL数据库增删改查操作_第15张图片

附加

一.插入操作

import pymysql

conn = pymysql.connect(host='localhost', port=3306, db='school', user='root', passwd='root', charset='utf8')
cur = conn.cursor()
sql = "insert into student(Sno,Sname,Ssex) values('100','黄蓉','woman')"
cur.execute(sql)
conn.commit()
cur.close()
conn.close()

Python之MySQL数据库增删改查操作_第16张图片

二.查询操作

execute方法:执行SQL、将结果从数据为获取到客户端:

Python之MySQL数据库增删改查操作_第17张图片

fetch*()方法:移动rownumber,返回数据。

Python之MySQL数据库增删改查操作_第18张图片

import pymysql

conn = pymysql.connect(host='localhost', port=3306, db='school', user='root', passwd='root', charset='utf8')
cur = conn.cursor()
sql = "select Sno,Sname,Ssex from student"
cur.execute(sql)
# result = cur.fetchone()
result = cur.fetchall()
for data in result:
    print(data)
cur.close()
conn.close()

Python之MySQL数据库增删改查操作_第19张图片

 

 

你可能感兴趣的:(Python,MySQL)