Python连接MySQL的基本操作

  1. 安装PyMySQL包:通过pip安装(我以往的文章有写怎么用pip安装模块),具体的指令是pip install PyMySQL
import pymysql

# 打开数据库连接,参数1:主机名或IP;参数2:用户名;参数3:密码;参数4:数据库名称
db = pymysql.connect("localhost", "root", "123456", "mrsoft")
# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()
# 使用 execute()  方法执行 SQL 查询
cursor.execute("SELECT VERSION()")
# 使用 fetchone() 方法获取单条数据.
data = cursor.fetchone()
print ("Database version : %s " % data)
# 关闭数据库连接
db.close()

输出MySQL数据库的版本
Database version : 5.6.22-log


 2. 创建数据表
  
import pymysql

# 打开数据库连接
db = pymysql.connect("localhost", "root", "123456", "mrsoft")
# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()
# 使用 execute() 方法执行 SQL,如果表存在则删除
cursor.execute("DROP TABLE IF EXISTS books")
# 使用预处理语句创建表
sql = """
CREATE TABLE books (
  id int(8) NOT NULL AUTO_INCREMENT,
  name varchar(50) NOT NULL,
  category varchar(50) NOT NULL,
  price decimal(10,2) DEFAULT NULL,
  publish_time date DEFAULT NULL,
  PRIMARY KEY (id)
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
"""
# 执行SQL语句
cursor.execute(sql)
# 关闭数据库连接
db.close()

在这里插入图片描述
在这里插入图片描述

  1. 操作MySQL数据表
 import pymysql

# 打开数据库连接
db = pymysql.connect("localhost", "root", "123456", "mrsoft",charset="utf8")
# 使用cursor()方法获取操作游标
cursor = db.cursor()
# 数据列表
data = [("计算机操作系统",'计算机基础','79.80','2018-5-20'),
        ("计算机组成原理",'计算机基础','69.80','2018-6-18'),
        ("计算机网络",'计算机基础','69.80','2017-5-21'),
        ("数据结构",'c语言','79.80','2016-5-21'),
        ("离散数学",'数学 ','69.80','2017-5-21'),
        ]
try:
    # 执行sql语句,插入多条数据
    cursor.executemany("insert into books(name, category, price, publish_time) values (%s,%s,%s,%s)", data)
    # 提交数据
    db.commit()
except:
    # 发生错误时回滚
    db.rollback()

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

在这里插入图片描述

  1. 记录用户登日记
import time
import pymysql

def show_info():
    print('''输入提示数字,执行相应操作
0:退出
1:查看登录日志
    ''')

def init_mysql():
    db = pymysql.connect("localhost", "root", "123456", "mrsoft",charset="utf8")
    cursor = db.cursor()
    return cursor,db


def save_data(username,password):
    """
    存入MySQL数据库
    :param username: 用户名
    :param password: 密码
    """
    cursor,db = init_mysql()
    #如果login不存在则创建一个login
    cursor.execute("create table if not exists login(username varchar(50) NOT NULL,\
                    password varchar(50) NOT NULL,\
                    create_time varchar(50) NOT NULL)")
    try:
        create_time = time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))
        cursor.execute("insert into login(username,password,create_time) values( % s, % s, % s)" ,(username,password,create_time))
        db.commit()
    except:
        db.rollback()
    db.close()

def get_loginfo():
    cursor, db = init_mysql()
    cursor.execute('select username,create_time from login')
    results = cursor.fetchall()
    db.close()
    return results

if __name__ == "__main__":
    # 输入用户名
    username = input('请输入用户名:')
    # 检测用户名
    while len(username) < 2 :
        print('用户名长度应不少于2位')
        username = input('请输入用户名:')
    # 输入密码
    password = input('请输入密码:')
    # 检测密码
    while len(password) < 6 :
        print('密码长度应不少于6位')
        password = input('请输入密码:')

    print('登录成功')
    save_data(username,password)      # 写入日志
    show_info()                       # 提示信息
    num = int(input('输入操作数字:')) # 输入数字

    # 菜单功能
    while True:
        if num == 0:
            print('退出成功')
            break
        elif num == 1:
            print('查看登录日志')
            results = get_loginfo()
            for result in results:
                print("用户名:{} 登录时间:{}\r".format(result[0],result[1]))
            show_info()
            num = int(input('输入操作数字:'))
        else:
            print('您输入的数字有误')
            show_info()
            num = int(input('输入操作数字:'))

猜你喜欢

转载自blog.csdn.net/BooleanWater/article/details/88320087