学习mysql的第6天

mysql与python的交互

1、python3 安装 mysql 用pip install PyMySQL

学习mysql的第6天_第1张图片

import pymysql

# 链接数据库
# 参数1:mysql服务所在主句的IP
# 参数2:用户名
# 参数3:密码
# 参数4:要链接的数据库名 

# db = pymysql.connect("localhost", "root", "mysql密码", "kaige") #localhost也可以用
db = pymysql.connect("IP地址", "root", "mysql密码", "kaige")

# 创建一个cursor对象(这个对象可以帮助我们执行sql语句)
cursor = db.cursor()

sql = "select version()"

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

# 获取返回的信息
data = cursor.fetchone()

print(data)

# 断开数据库连接
cursor.close()
db.close()

Run运行
在这里插入图片描述
注意:如果参数1 填 mysql服务所在主句的IP 运行时报错 修改user表 的User用户列 root的Host项改为 %
之后以管理员身份 重启mysql服务
学习mysql的第6天_第2张图片

2、创建数据库表

import pymysql
# 链接数据库
# 参数1:mysql服务所在主句的IP
# 参数2:用户名
# 参数3:密码
# 参数4:要链接的数据库名

# db = pymysql.connect("localhost", "root", "mysql密码", "kaige")
db = pymysql.connect("IP地址", "root", "mysql密码", "kaige")

# 创建一个cursor对象(这个对象可以帮助我们执行sql语句)
cursor = db.cursor()

# 检查表是否存在,如果存在则删除
cursor.execute("drop table if exists bandcard")

# 建表
sql = 'create table bandcard(id int auto_increment primary key, money int not null)'

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

# 断开数据库连接
cursor.close()
db.close()

学习mysql的第6天_第3张图片

数据库插入数据

import pymysql
# 链接数据库
# 参数1:mysql服务所在主句的IP
# 参数2:用户名
# 参数3:密码
# 参数4:要链接的数据库名

# db = pymysql.connect("localhost", "root", "mysql密码", "kaige")
db = pymysql.connect("IP地址", "root", "mysql密码", "kaige")

# 创建一个cursor对象(这个对象可以帮助我们执行sql语句)
cursor = db.cursor()

# 给表插入数据
sql = 'insert into bandcard value(0, 100)'

# 插入数据有可能不成功
try:
    # 执行sql语句
    cursor.execute(sql) #实际写到缓存里

    # 把事务所做的修改保存到数据库(commit提交事务)
    db.commit() # db.提交()
except:
    # 如果提交失败,回滚到上次数据 #rollback()就是与commit()相反,不提交事务,可以理解成撤回的意思
    db.rollback() # db.回滚()
    
# 断开数据库连接
cursor.close()
db.close()

学习mysql的第6天_第4张图片

4、数据库更新操作

import pymysql
# 链接数据库
# 参数1:mysql服务所在主句的IP
# 参数2:用户名
# 参数3:密码
# 参数4:要链接的数据库名

# db = pymysql.connect("localhost", "root", "mysql密码", "kaige")
db = pymysql.connect("IP地址", "root", "mysql密码", "kaige")

# 创建一个cursor对象(这个对象可以帮助我们执行sql语句)
cursor = db.cursor()

# 修改bancard表 money=1000 条件是 id=1
sql = 'update bandcard set money=1000 where id=1'

# 插入数据有可能不成功
try:
    # 执行sql语句
    cursor.execute(sql) #实际写到缓存里

    # 把事务所做的修改保存到数据库(commit提交事务)
    db.commit() # db.提交()
except:
    # 如果提交失败,回滚到上次数据 #rollback()就是与commit()相反,不提交事务,可以理解成撤回的意思
    db.rollback() # db.回滚()
# 断开数据库连接
cursor.close()
db.close()

5、数据库删除操作

1、首先来插入几条数据

sql = 'insert into bandcard value(0, 200), (0, 200), (0, 200),  (0, 500)'

学习mysql的第6天_第5张图片

import pymysql
# 链接数据库
# 参数1:mysql服务所在主句的IP
# 参数2:用户名
# 参数3:密码
# 参数4:要链接的数据库名

# db = pymysql.connect("localhost", "root", "mysql密码", "kaige")
db = pymysql.connect("IP地址", "root", "mysql密码", "kaige")

# 创建一个cursor对象(这个对象可以帮助我们执行sql语句)
cursor = db.cursor()

# 删除bancard表中 money=200 数据
sql = 'delete from bandcard where money=200'

# 插入数据有可能不成功
try:
    # 执行sql语句
    cursor.execute(sql) #实际写到缓存里
    
    # 把事务所做的修改保存到数据库(commit提交事务)
    db.commit() # db.提交()
except:
    # 如果提交失败,回滚到上次数据 #rollback()就是与commit()相反,不提交事务,可以理解成撤回的意思
    db.rollback() # db.回滚()
    
# 断开数据库连接
cursor.close()
db.close()

6、数据库查询操作

1、首先来插入几条数据

sql = 'insert into bandcard value(0, 200), (0, 500), (0, 400), (0, 600)'
'''
 fetchone()
 功能:获取下一个查询结果集,结果集是一个对象
 返回单个元组,如果查询不到结果,则返回None
 
 fetchall()
 功能:接受全部的返回的行
 
 rowcount: 是一个只读属性,返回execute()方法影响的行数
 返回二维元组,如果查询不到结果,则返回()
'''
import pymysql
# 链接数据库
# 参数1:mysql服务所在主句的IP
# 参数2:用户名
# 参数3:密码
# 参数4:要链接的数据库名

# db = pymysql.connect("localhost", "root", "mysql密码", "kaige")
db = pymysql.connect("IP地址", "root", "mysql密码", "kaige")

# 创建一个cursor对象(这个对象可以帮助我们执行sql语句)
cursor = db.cursor()

# 查询 money钱 > 400的
sql = 'select * from bandcard where money>400'

# 插入数据有可能不成功
try:
    # 执行sql语句
    cursor.execute(sql) #实际写到缓存里
    
    #想获得所有数据(拿到所有行数)
    reslist = cursor.fetchall()

    print("id\t——\tmoney")
    #一行行的处理
    for row in reslist:
        print("%d\t——\t%d" % (row[0], row[1]))
except:
    # 如果提交失败,回滚到上次数据 #rollback()就是与commit()相反,不提交事务,可以理解成撤回的意思
    db.rollback() # db.回滚()
    
# 断开数据库连接
cursor.close()
db.close()

学习mysql的第6天_第6张图片

7、数据库操作的封装 fzSql.py

import pymysql

class FzSql():
    def __init__(self, host, user, passwd, dbName):
        self.host = host
        self.user = user
        self.passwd = passwd
        self.dbName = dbName

    # 链接数据库
    def connet(self):
        # 链接
        self.db = pymysql.connect(self.host, self.user, self.passwd, self.dbName)

        # 创建一个cursor对象(这个对象可以帮助我们执行sql语句)
        self.cursor = self.db.cursor()

    # 释放数据库(断开数据库)
    def close(self):
        self.cursor.close()
        self.db.close()

# 数据库操作

    # 查询数据库第一条数据
    def get_one(self, sql):
        # res = 没有
        res = None
        try:
            # 链接数据库
            self.connet()
            # 执行sql语句
            self.cursor.execute(sql)
            # 想获得第一条数据(拿到第一行数)
            res = self.cursor.fetchone()
            # 断开数据库
            self.close()
        except:
            print("查询失败")
        return res

    # 查询数据库所有数据
    def get_all(self, sql):
        # res = 没有
        res = None
        try:
            # 链接数据库
            self.connet()
            # 执行sql语句
            self.cursor.execute(sql)
            # 想获得所有数据(拿到所有行数)
            res = self.cursor.fetchall()
            # 断开数据库
            self.close()
        except:
            print("查询失败")
        return res

    # 数据库插入数据
    def insert(self, sql):
        return self.__edit(sql)

    # 数据库删除数据
    def delete(self, sql):
        return self.__edit(sql)

    # 数据库更新数据
    def update(self, sql):
        return self.__edit(sql)

    # 编辑操作
    def __edit(self, sql):
        # 执行sql语句
        count = self.cursor.execute(sql)
        # 把事务所做的修改保存到数据库(commit提交事务)
        self.db.commit()
        try:
            self.connet()   # 链接数据库

            self.close()    # 释放数据库(断开数据库)
        except:
            print("事务提交失败")
            # 如果提交失败,回滚到上次数据 #rollback()就是与commit()相反,不提交事务,可以理解成撤回的意思
            self.db.rollback()   # db.回滚()

8、使用封装

from fzSql import FzSql

# 链接数据库
s = FzSql("192.168.2.171", "root", "8977@xn", "kaige")

# 数据库查询
res = s.get_all("select * from bandcard where money>400")

print("id\t——\tmoney")
# 一行行的处理
for row in res:
        print("%d\t——\t%d" % (row[0], row[1]))

学习mysql的第6天_第7张图片

你可能感兴趣的:(mysql)