博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySql与python交互
阅读量:6376 次
发布时间:2019-06-23

本文共 2728 字,大约阅读时间需要 9 分钟。

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-8from 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-8from MysqlHelper import MysqlHelperfrom 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('密码错误')

以上

转载地址:http://cttqa.baihongyu.com/

你可能感兴趣的文章
MQ 对比
查看>>
实战:RHEL6配置dhcp服务器并绑定主机IP
查看>>
RHEL7/centos7 安装XEN
查看>>
百度不收录原因分析——Spider抓取篇
查看>>
ROS记录上网日志到remote syslog服务器
查看>>
Confluence 6 配置校验和识别
查看>>
Ubuntu Server 上安装 Jexus
查看>>
二台inux主机之间scp复制文件
查看>>
Android studio 申请签名,设置签名key位置 查看 sha1
查看>>
浏览器渲染原理及解剖浏览器内部工作原理
查看>>
向大院大所要智慧——江苏创新转型扫描
查看>>
dubbo连接zookeeper注册中心因为断网导致线程无限等待问题【转】
查看>>
Spring Boot项目配置RabbitMQ集群
查看>>
bash 交互与非交互
查看>>
怎么提高自身技术
查看>>
北京游泳馆
查看>>
cacti安装与配置
查看>>
Mac 安卓模拟器打开 ONS
查看>>
完全卸载Oracle 11g教程
查看>>
Oracle调整表空间大小——ORA-03297: 文件包含在请求的 RESIZE 值以外使用的数据
查看>>