• python使用mysql数据库


    https://pypi.python.org/pypi/MySQL-python/1.2.4 (在这下载mysql模块)

    python 操作mysql数据库基础

    复制代码
    #coding=utf-8import MySQLdb
    
    conn= MySQLdb.connect(
            host='127.0.0.1',
            port = 3306,
            user='root',
            passwd='',
            db ='test',
            charset="utf8",
            )
    cur = conn.cursor()
    
    #创建数据表
    #cur.execute("create table student(id int ,name varchar(20),class varchar(30),age varchar(10))")#插入一条数据
    #cur.execute("insert into student values('2','Tom','3 year 2 class','9')")#修改查询条件的数据
    #cur.execute("update student set class='3 year 1 class' where name = 'Tom'")#删除查询条件的数据
    #cur.execute("delete from student where age='9'")
    cur.close()
    conn.commit()
    conn.close()
    复制代码

    >>> conn = MySQLdb.connect(host='localhost',port = 3306,user='root', passwd='123456',db ='test',)

    Connect() 方法用于创建数据库的连接,里面可以指定参数:用户名,密码,主机等信息。

    这只是连接到了数据库,要想操作数据库需要创建游标。

     

    >>> cur = conn.cursor()

    通过获取到的数据库连接conn下的cursor()方法来创建游标。

     

    >>> cur.execute("create table student(id int ,name varchar(20),class varchar(30),age varchar(10))")

    通过游标cur 操作execute()方法可以写入纯sql语句。通过execute()方法中写如sql语句来对数据进行操作。

     

    >>>cur.close()

    cur.close() 关闭游标

    >>>conn.commit()

    conn.commit()方法在提交事物,在向数据库插入一条数据时必须要有这个方法,否则数据不会被真正的插入。

    >>>conn.close()

    Conn.close()关闭数据库连接

     

     

    六,插入数据

     

    通过上面execute()方法中写入纯的sql语句来插入数据并不方便。如:

    >>>cur.execute("insert into student values('2','Tom','3 year 2 class','9')")

    我要想插入新的数据,必须要对这条语句中的值做修改。我们可以做如下修改:

    复制代码
    #coding=utf-8import MySQLdb
    
    conn= MySQLdb.connect(
            host='localhost',
            port = 3306,
            user='root',
            passwd='123456',
            db ='test',
            )
    cur = conn.cursor()
    
    #插入一条数据
    sqli="insert into student values(%s,%s,%s,%s)"
    cur.execute(sqli,('3','Huhu','2 year 1 class','7'))
    
    cur.close()
    conn.commit()
    conn.close()
    复制代码

     

    假如要一次向数据表中插入多条值呢?

    复制代码
    #coding=utf-8import MySQLdb
    
    conn= MySQLdb.connect(
            host='localhost',
            port = 3306,
            user='root',
            passwd='123456',
            db ='test',
            )
    cur = conn.cursor()
    
    #一次插入多条记录
    sqli="insert into student values(%s,%s,%s,%s)"
    cur.executemany(sqli,[
        ('3','Tom','1 year 1 class','6'),
        ('3','Jack','2 year 1 class','7'),
        ('3','Yaheng','2 year 2 class','7'),
        ])
    
    cur.close()
    conn.commit()
    conn.close()
    复制代码

    executemany()方法可以一次插入多条值,执行单挑sql语句,但是重复执行参数列表里的参数,返回值为受影响的行数。

     

     

    七,查询数据

     

    也许你已经尝试了在python中通过

    >>>cur.execute("select * from student")

    来查询数据表中的数据,但它并没有把表中的数据打印出来,有些失望。

    来看看这条语句获得的是什么

    >>>aa=cur.execute("select * from student")

    >>>print aa

    5

    它获得的只是我们的表中有多少条数据。那怎样才能获得表中的数据呢?进入python shell

     

    复制代码
    >>> import MySQLdb
    >>> conn = MySQLdb.connect(host='localhost',port = 3306,user='root',    passwd='123456',db ='test',)
    >>> cur = conn.cursor()
    >>> cur.execute("select * from student")
    5L
    >>> cur.fetchone()
    (1L, 'Alen', '1 year 2 class', '6')
    >>> cur.fetchone()
    (3L, 'Huhu', '2 year 1 class', '7')
    >>> cur.fetchone()
    (3L, 'Tom', '1 year 1 class', '6')
    ...
    >>>cur.scroll(0,'absolute') 
    复制代码

     

      fetchone()方法可以帮助我们获得表中的数据,可是每次执行cur.fetchone() 获得的数据都不一样,换句话说我没执行一次,游标会从表中的第一条数据移动到下一条数据的位置,所以,我再次执行的时候得到的是第二条数据。

      scroll(0,'absolute') 方法可以将游标定位到表中的第一条数据。

     

    还是没解决我们想要的结果,如何获得表中的多条数据并打印出来呢?

    复制代码
    #coding=utf-8import MySQLdb
    
    conn= MySQLdb.connect(
            host='localhost',
            port = 3306,
            user='root',
            passwd='123456',
            db ='test',
            )
    cur = conn.cursor()
    
    #获得表中有多少条数据
    aa=cur.execute("select * from student")
    print aa
    
    #打印表中的多少数据
    info = cur.fetchmany(aa)
    for ii in info:
        print ii
    cur.close()
    conn.commit()
    conn.close()
    复制代码

      通过之前的print aa 我们知道当前的表中有5条数据,fetchmany()方法可以获得多条数据,但需要指定数据的条数,通过一个for循环就可以把多条数据打印出啦!执行结果如下:

     

    复制代码
    5
    (1L, 'Alen', '1 year 2 class', '6')
    (3L, 'Huhu', '2 year 1 class', '7')
    (3L, 'Tom', '1 year 1 class', '6')
    (3L, 'Jack', '2 year 1 class', '7')
    (3L, 'Yaheng', '2 year 2 class', '7')
    [Finished in 0.1s]





  • 相关阅读:
    C# 不用添加WebService引用,调用WebService方法
    贪心 & 动态规划
    trie树 讲解 (转载)
    poj 2151 Check the difficulty of problems (检查问题的难度)
    poj 2513 Colored Sticks 彩色棒
    poj1442 Black Box 栈和优先队列
    啦啦啦
    poj 1265 Area(pick定理)
    poj 2418 Hardwood Species (trie树)
    poj 1836 Alignment 排队
  • 原文地址:https://www.cnblogs.com/tangbinghaochi/p/6292987.html
Copyright © 2020-2023  润新知