zoukankan      html  css  js  c++  java
  • Python和Mysql交互

    安装引入模块

    ~安装mysql模块

    sudo apt-get install python-mysqldb

    ~在文件中引入模块

    import MySQLdb

    Connection对象

    用于建立与数据库的连接,创建对象:调用connect()方法

    conn=MySQLdb.connect(参数列表)

    其中参数列表有:

    host: 连接的mysql主机,如果本机是'localhost';

    port: 连接的mysql主机的端口,默认是3306;

    db: 数据库的名称;

    user: 连接的用户名;

    passwd: 连接的密码;

    charset: 通信采用的编码方式,推荐使用utf8

    对象的方法

    close() 关闭连接

    commit()事务,所以需要提交才会生效;

    rollback()事务,放弃之前的操作;

    cursor()返回Cursor对象,用于执行sql语句并获得结果;

    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获得当前连接对象

    案例:

    插入

     1 #coding=utf-8
     2 
     3 from MySQLdb import *
     4 
     5 try:
     6     conn=connect(host='localhost',port=3306,user='root',passwd='mysql',db='python3',charset='utf8')
     7 
     8     cursor1 = conn.cursor()
     9 
    10     sql = 'insert into student(name) values('liu')'
    11 
    12     cursor1.execute(sql)
    13 
    14     conn.commit()
    15 
    16     cursor1.close()
    17 
    18     conn.close()
    19 
    20 except Exception,e:
    21 
    22     print(e.message)

    参数化:

    目的就是为了防止SQL注入

     1 #encoding=utf-8
     2 
     3 from MySQLdb import *
     4 
     5 try:
     6 
     7     conn = connect(host='localhost',port=3306,user='root',passwd='mysql',db='python3',charset='utf8')
     8 
     9     cur = conn.cursor()
    10 
    11     sname = 'xxxx'
    12 
    13     params = [sname]
    14 
    15     count = cur.execute('insert into students(sname) values(%s)',params)
    16 
    17     print(count)
    18 
    19     conn.commit()
    20 
    21     cur.close()
    22 
    23     conn.close()
    24 
    25 except Exception,e:
    26 
    27     print(e.message)

    其他语句 Cursor对象的execute()方法,也可以用于执行create table等语句;

    建议在开发之初就创建好数据库,不要在这里执行创建工作。

    查询  查询一行数据使用Cursor对象的fetchone,查询所有数据使用fetchall()

     1 #encoding=utf-8
     2 
     3 from MySQLdb import *
     4 
     5 try:
     6 
     7     conn = connect()
     8 
     9     sql = "select * from admin where id = %s" 
    10 
    11     cur = conn.cursor()
    12 
    13     cur.execute(sql,[5])
    14 
    15     res = cur.fetchone()
    16 
    17     print(res)  一个元祖
    18 
    19     cur.close()
    20 
    21     conn.close()
    22 
    23 except Exception,e:
    24 
    25     print(e.message)

    封装 访问数据库代码:

     1 class MysqlHelper(object):
     2 
     3     def __init__(self,host,port,db,user,passwd,charset='utf8'):
     4 
     5         self.host=host
     6 
     7         self.port=port
     8 
     9         self.db=db
    10 
    11         self.user=user
    12 
    13         self.passwd=passwd
    14 
    15         self.charset=charset
    16 
    17     def open(self):
    18 
    19         self.conn=connect(host=self.host,port=self.port,db=self.db,user=self.user,passwd=self.passwd,charset=self.charset) 
    20 
    21         self.cursor=self.conn.cursor()
    22 
    23     def close(self):
    24 
    25         self.cursor.close()
    26 
    27         self.conn.close()
    28 
    29     def cud(self,sql,params):
    30 
    31         try:
    32 
    33             self.open()
    34 
    35             self.cursor.execute(sql,params)
    36 
    37             self.conn.commit()
    38 
    39             self.close()
    40 
    41         except Exception,e:
    42 
    43             print(e.message)
    44 
    45      
    46 
    47      def all(self,sql,params):
    48 
    49         try:
    50 
    51              self.open()
    52 
    53              self.cursor.execute(sql,params)
    54 
    55              result=self.cursor.fetchall()
    56 
    57              self.close()
    58 
    59              return result

    登录案例:

    密码加密:

     1 import hashlib
     2 
     3     m = hashlib.md5()
     4 
     5     m.update("Nobody inspects")
     6 
     7     m.digest()
     8 
     9 
    10 
    11 import hashlib
    13     s1=sha1()
    14 
    15     s1.update(pwd)
    16 
    17     pwd2=s1.hexdigest()

    总结python与mysql交互

    Connection 对象 尽量晚打开,尽量早关闭

             connect(host,port,db,user,passwd,charset)

             cursor()

             close()

    Cursor

             execute()  如果执行insert update delete 语句时,需要commit()

             commit()  

             fetchall()  返回二维元祖

             fetchone()  返回一维元祖

             close()

    需要完成的内容:

    封装数据库操作工具类

    实现工具类完成crud操作

    独立实现用户登录

    实现用户注册

  • 相关阅读:
    WordPress主题开发实例:查询单篇文章
    WordPress基础:get_page_link获取页面地址
    WordPress主题开发:优化标题
    React中的的JSX
    WordPress主题开发:WP_Query常用参数
    WordPress基础:wp_list_pages显示页面信息列表
    WordPress基础:常用分类列表wp_list_categories
    SQL Server 2008 安装教程
    XCODE调试时不显示变量值/指针地址的解决方案
    android iOS 编码问题害死人!
  • 原文地址:https://www.cnblogs.com/PythonInMyLife/p/7888305.html
Copyright © 2011-2022 走看看