zoukankan      html  css  js  c++  java
  • python使用MySQLdb模块连接MySQL

    1.安装驱动

    目前有两个MySQL的驱动,我们可以选择其中一个进行安装:

    MySQL-python:是封装了MySQL C驱动的Python驱动;mysql-connector-python:是MySQL官方的纯Python驱动。

    MySQL-python:

    安装教程:http://www.cnblogs.com/jfl-xx/p/7299221.html

    mysql-connector-python:

    安装教程:http://www.cnblogs.com/Bgod/p/6995601.html

    2.测试连接

    这里使用MySQL-python驱动,即MySQLdb模块。

    test_connect.py

     1 #!/usr/bin/python
     2 # -*- coding: UTF-8 -*-
     3 
     4 import MySQLdb
     5 
     6 # 打开数据库连接
     7 db = MySQLdb.connect("localhost", "root", "123456", "test")
     8 
     9 # 使用cursor()方法获取操作游标
    10 cursor = db.cursor()
    11 
    12 # 使用execute方法执行SQL语句
    13 cursor.execute("SELECT VERSION()")
    14 
    15 # 使用 fetchone() 方法获取一条数据库。
    16 data = cursor.fetchone()
    17 
    18 print "Database version : %s " % data
    19 
    20 # 关闭数据库连接
    21 db.close()

    测试结果如下,连接成功:

    3.创建数据库表

    测试成功后,我们可以在python中直接为MySQL创建表:

    create_table.py

     1 #!/usr/bin/python
     2 # -*- coding: UTF-8 -*-
     3 
     4 import MySQLdb
     5 
     6 # 打开数据库连接
     7 db = MySQLdb.connect("localhost", "root", "123456", "test")
     8 
     9 # 使用cursor()方法获取操作游标
    10 cursor = db.cursor()
    11 
    12 # 如果数据表已经存在使用 execute() 方法删除表。
    13 cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")
    14 
    15 # 创建数据表SQL语句
    16 sql = """CREATE TABLE EMPLOYEE (
    17          FIRST_NAME  CHAR(20) NOT NULL,
    18          LAST_NAME  CHAR(20),
    19          AGE INT,  
    20          SEX CHAR(1),
    21          INCOME FLOAT )"""
    22 
    23 cursor.execute(sql)
    24 
    25 # 关闭数据库连接
    26 db.close()

    建表结果 如下:

    4.操作数据库表

    注意点:MySQL中的占位符为%s

    operate_table.js

     1 #!/usr/bin/python
     2 # -*- coding: UTF-8 -*-
     3 
     4 import MySQLdb
     5 
     6 # 打开数据库连接
     7 db = MySQLdb.connect("localhost", "root", "123456", "test")
     8 
     9 # 使用cursor()方法获取操作游标
    10 cursor = db.cursor()
    11 
    12 # SQL插入语句
    13 ins_sql = """INSERT INTO EMPLOYEE(FIRST_NAME,
    14          LAST_NAME, AGE, SEX, INCOME)
    15          VALUES ('yu', 'jie', 20, 'M', 8000)"""
    16 
    17 ins_sql1 = 'insert into employee(first_name, last_name, age, sex, income) values (%s, %s, %s, %s, %s)'
    18 
    19 # SQL查询语句
    20 sel_sql = 'select * from employee where first_name = %s'
    21 
    22 # SQL更新语句
    23 upd_sql = 'update employee set age = %s where sex = %s'
    24 
    25 # SQL删除语句
    26 del_sql = 'delete from employee where first_name = %s'
    27 
    28 try:
    29     # 执行sql语句
    30     # insert
    31     cursor.execute(ins_sql)
    32     cursor.execute(ins_sql1, ('xu', 'f', 20, 'M', 8000))
    33     # select
    34     cursor.execute(sel_sql, ('yu',))
    35     values = cursor.fetchall()
    36     print values
    37     # update
    38     cursor.execute(upd_sql, (24, 'M',))
    39     # delete
    40     cursor.execute(del_sql, ('xu',))
    41 
    42     # 提交到数据库执行
    43     db.commit()
    44 except:
    45     # 发生错误时回滚
    46     db.rollback()
    47 
    48 # 关闭数据库连接
    49 db.close()

     执行插入操作

    执行查询操作

    执行更新操作

    执行删除操作

    查询语句的知识点:

    Python查询Mysql使用 fetchone() 方法获取单条数据, 使用fetchall() 方法获取多条数据。

    fetchone(): 该方法获取下一个查询结果集。结果集是一个对象

    fetchall():接收全部的返回结果行.

    例如该例子:

     1 sel_sql = 'select * from employee where first_name = %s'
     2 cursor.execute(sel_sql, ('yu',))
     3     results = cursor.fetchall()
     4     for row in results:
     5         fname = row[0]
     6         lname = row[1]
     7         age = row[2]
     8         sex = row[3]
     9         income = row[4]
    10         print "fname=%s, lname=%s,age=%d,sex=%s,income=%d" % (fname, lname, age, sex, income)

    结果如下:

  • 相关阅读:
    HDU 5585 Numbers
    HDU 3308 LCIS
    POJ 2991 Crane
    POJ 1436 Horizontally Visible Segments
    POJ 3667 Hotel
    HaiHongOJ 1003 God Wang
    【SDOI 2008】 递归数列
    5月19日省中提高组题解
    【HDU 1588】 Gauss Fibonacci
    【POJ 3233】Matrix Power Series
  • 原文地址:https://www.cnblogs.com/jfl-xx/p/7306081.html
Copyright © 2011-2022 走看看