zoukankan      html  css  js  c++  java
  • MySql与python交互

    No1:

    引入MySql:python2是Mysqldb,python3是pymysql

    No2:

    Connection对象

    • 用于建立与数据库的连接
    • 创建对象:调用connect()方法
    conn=connect(参数列表)
    • 参数host:连接的mysql主机,如果本机是'localhost'
    • 参数port:连接的mysql主机的端口,默认是3306
    • 参数db:数据库的名称
    • 参数user:连接的用户名
    • 参数password:连接的密码
    • 参数charset:通信采用的编码方式,默认是'gb2312',要求与数据库创建时指定的编码一致,否则中文会乱码

    对象的方法

    • close()关闭连接
    • commit()事务,所以需要提交才会生效
    • rollback()事务,放弃之前的操作
    • cursor()返回Cursor对象,用于执行sql语句并获得结果

    No3:

    Cursor对象

    • 执行sql语句
    • 创建对象:调用Connection对象的cursor()方法
    cursor1=conn.cursor()
    

    对象的方法

    • close()关闭
    • execute(operation [, parameters ])执行语句,返回受影响的行数
    • fetchone()执行查询语句时,获取查询结果集的第一个行数据,返回一个元组
    • next()执行查询语句时,获取当前行的下一行
    • fetchall()执行查询时,获取结果集的所有行,一行构成一个元组,再将这些元组装入一个元组返回
    • scroll(value[,mode])将行指针移动到某个位置
      • mode表示移动的方式
      • mode的默认值为relative,表示基于当前行移动到value,value为正则向下移动,value为负则向上移动
      • mode的值为absolute,表示基于第一条数据的位置,第一条数据的位置为0

    对象的属性

    • rowcount只读属性,表示最近一次execute()执行后受影响的行数
    • connection获得当前连接对象

    No4:

    增删改查

    # coding=utf-8
    from pymysql import *
    
    try:
        conn = connect(host='localhost', port=3306, user='root', passwd='mysql', db='python3', charset='utf8')
        cursor1 = conn.cursor()
        # sql = 'insert into students(name) values ("锅小二")'
        # sql = 'update students set name="王二小" where id = 9'
        sql = 'delete from students where id = 9'
        cursor1.execute(sql)
    
        conn.commit()
    
        cursor1.close()
        conn.close()
    except Exception:
        print()

    No5:

    封装+用户登录

    from pymysql import *
    
    
    class MysqlHelper:
        def __init__(self, host, port, db, user, passwd, charset='utf-8'):
            self.host = host
            self.port = port
            self.db = db
            self.user = user
            self.passwd = passwd
            self.charset = charset
    
        def open(self):
            self.conn = connect(host=self.host, port=self.port, db=self.db, user=self.user, passwd=self.passwd,
                                charset=self.charset)
            self.cursor = self.conn.cursor()
    
        def close(self):
            self.cursor.close()
            self.conn.close()
    
        def cud(self, sql, params):
            try:
                self.open()
    
                self.cursor.execute(sql, params)
                self.conn.commit()
    
                self.close()
            except Exception:
                print()
    
        def all(self, sql, params):
            try:
                self.open()
    
                self.cursor.execute(sql, params)
                result = self.cursor.fetchall()
    
                self.close()
    
                return result
            except Exception:
                print()
    # coding=utf-8
    from MysqlHelper import MysqlHelper
    from hashlib import sha1
    
    # 接收用户输入
    name = input("请输入用户名")
    pwd = input("请输入密码")
    
    # 对密码加密
    s1 = sha1()
    s1.update(pwd)
    pwd2 = s1.hexdigest()
    
    # 根据用户名查询密码
    sql = 'select passwd from users where name=%s'
    helper = MysqlHelper('localhost', 3306, 'python3', 'root', 'mysql')
    result = helper.all(sql, [name])
    if len(result) == 0:
        print('用户名错误')
    elif result[0][0] == pwd2:
        print('登录成功')
    else:
        print('密码错误')

    以上

  • 相关阅读:
    解决url传递过程中加号变空格的问题<转>
    windows下CEF3的关闭流程《转》
    mfc封装cef浏览器 关闭整个窗口程序得时候又重启mfc 应用的程序
    雷神免费资源
    LCA的 RMQ解法模版
    最新的js焦点图库
    whereis+whatis+man
    Anroid 手机助手 详细解析 概述(二)
    <c:forEach varStatus="status">中 varStatus的属性简介
    JBoss 系列四十九:JBoss 7/WildFly 中端口使用列表
  • 原文地址:https://www.cnblogs.com/anni-qianqian/p/10008494.html
Copyright © 2011-2022 走看看