• python 安装操作 MySQL 数据库.


    以ubuntu和mysql为例

    检查自己的机器上面有没有安装数据库

    1 xpower@xpower-CW65S:~$ sudo service mysql start
    2 [sudo] xpower 的密码: 


    尝试输入命令打开 MySQL 不同的版本会有不同的效果 , 我的什么反馈也没有这就说明已经安装并且启动成功了 ( 没有消息就是最好的消息 ) 有的 ubuntu 会有反馈 , 自己看反馈内容 . 很容易判断 .

    安装MySQL(安装过程中可能需要填写一点东西 . 建议填写一下 . )

    1 xpower@xpower-CW65S:~$ sudo apt-get install mysql-server # 安装MySQL服务端,核心 程序
    2 xpower@xpower-CW65S:~$ sudo apt-get install mysql-client # 安装MySQL客户端

     安装MySQLdb              

    我当时尝试了好几种方法来安装但是都失败了 最后用了这个(好像是这个吧...)

    xpower@xpower-CW65S:~$ sudo pip install MySQL-python

    准备工作完毕 下面开始 , 实践一发 MySQL的基础操作温习一下.

    启动MySQL

    mysql -u root -p # 有密码的时候的启动方式 .
    
    mysql -u root     # 没有密码的时候的启动方式 . 

    练习 MySQL 的基本操作

    xpower@xpower-CW65S:~$ mysql -u root -p  # 启动数据库
    Enter password: 
    mysql> show databases;   #查看当前所有的数据库
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | mysql              |
    | mysql_xpower       |
    | performance_schema |
    | sys                |
    +--------------------+
    5 rows in set (0.00 sec)
    mysql> use mysql_xpower # 链接 mysql_xpower 数据库
    Database changed
    mysql> show tables;   # 查看 mysql_xpower下的所有表单 
    +------------------------+
    | Tables_in_mysql_xpower |
    +------------------------+
    | Student_information    |
    | employee               |
    | user                   |
    +------------------------+
    3 rows in set (0.00 sec)
    mysql> DROP TABLE user;  # 删除表单 user
    Query OK, 0 rows affected (0.30 sec)
    mysql> CREATE TABLE user (name VARCHAR(20),password VARCHAR(20)); #创建一个 user 表单 
    Query OK, 0 rows affected (0.46 sec)
    mysql> show tables;   # 查看 mysql下的所有表单
    +------------------------+
    | Tables_in_mysql_xpower |
    +------------------------+
    | Student_information    |
    | employee               |
    | user                   |
    +------------------------+
    3 rows in set (0.00 sec)
    mysql> insert into user values('tom','12345');
    Query OK, 1 row affected (0.13 sec)
    
    mysql> insert into user values('jack','23456');
    Query OK, 1 row affected (0.04 sec)
    
    mysql> insert into user values('lucy','34567');
    Query OK, 1 row affected (0.12 sec)
    
    mysql> SHOW TABLES # 查看表单 
        -> ;
    +------------------------+
    | Tables_in_mysql_xpower |
    +------------------------+
    | Student_information    |
    | employee               |
    | user                   |
    +------------------------+
    3 rows in set (0.00 sec)
    
    mysql> SELECT * FROM user; 查看 user表单下所有项
    +------+----------+
    | name | password |
    +------+----------+
    | tom  | 12345    |
    | jack | 23456    |
    | lucy | 34567    |
    +------+----------+
    3 rows in set (0.00 sec)
    
     
    mysql> DELETE FROM user WHERE NAME='lucy'; # 删除用户 lucy
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> insert into user values('lucy','34567');
    Query OK, 1 row affected (0.04 sec)
    
    mysql> delete from user where name ='jack';
    Query OK, 1 row affected (0.05 sec)
    
    mysql> update user set password='111' where name ='lucy'; # 修改 lucy的密码 . 
    Query OK, 1 row affected (0.12 sec)
    Rows matched: 1  Changed: 1  Warnings: 0
    
    mysql> select * from user
        -> ;
    +------+----------+
    | name | password |
    +------+----------+
    | tom  | 12345    |
    | lucy | 111      |
    +------+----------+

    上面是MySQL的基本操作 , 自己动手打一遍

    进入正题

    >>> conn= MySQLdb.connect(
    ...         host='localhost',
    ...         port = 3306,
    ...         user='root',
    ...         passwd='密码',
    ...         db = '需要链接的数据库',
    ...         )

    在这里虽然我们取得了 python 的数据库链接 , 但是不能在这个对象上直接对数据库进行操作 , 还需要获取对应的操作游标才能进行数据库的操作 , 所以还需要 获取游标 .

    1 >>> cur = conn.cursor()

    创建一个数据库 (cur.execute() 没有返回被影响的行数 , 因为这里是创建数据库 , 所以被影响的是 0L)

    但是到这里语句并没有被真正的执行必须使用MySQLdb.commit() ( git ?  ) 才是真正的执行完毕 . 到这里才是真正的执行完毕 , 这时候我们的表格才是真正的创建完成 ,  同理向表中写入数据 , 也是一样的操作流程 execute ==> commit 不过 , 写入的数据的 execute , 也是少有不同 , 如下

    >>> cur.execute('CREATE TABLE stu_info (name VARCHAR(20),stu_id VARCHAR(30))')
    0L
    >>> conn.commit()
    >>> 

    下面会向表单中插入数据 , 是和上面不一样的插入方式 .

    >>> cur.executemany("insert into stu_info (name,stu_id) values (%s,%s)",(("jack",18),("lucy",19)))
    2L
    >>> conn.commit()


    >>> cur.execute("insert into stu_info (name,stu_id) values ('yuanchongyang','156
    31030706')")
    1L
    >>> cur.execute("insert into stu_info (name,stu_id) values ('caiweiwei','1563103
    0717') ")
    1L
    >>> conn.commit()

    上面尝试了一下 , 看看能不能和 git 一样多个数据 一次 commit . 需要了解一下 数据库的工作流程....

    >>> cur.execute("select * from stu_info")
    4L
    >>> stus = cur.fetchall()
    >>> stus

    查看表单内容

    1 >>> cur.execute("select * from stu_info")
    2 4L
    3 >>> stus = cur.fetchall()
    4 >>> stus
    5 (('yuanchongyang', '15631030706'), ('caiweiwei', '15631030717'), ('jack', '18'), ('lucy', '19'))
    1 >>>conn.close()
    2 
    3 Conn.close()关闭数据库连接

    上文中我们已经知道 , 通过

    >>> import MySQLdb
    >>> conn = MySQLdb.connect(
    ...         host='localhost',
    ...         port = 3306,
    ...         user='root',
    ...         passwd='q.123456',
    ...         db = 'mysql_xpower',
    ...         )
    >>> cur = conn.cursor()
    >>> sqli = "insert into stu_info values(%s,%s)"
    >>> cur.execute(sqli,('mengmeng',123456789))
    1L
    >>> cur.close()
    >>> cur = conn.cursor()
    >>> cur.execute("select * from stu_info")
    5L

    这个时候获得的cur可以用于显示 表单的内容  

    >>> stus = cur.fetchall()
    >>> stus
    (('yuanchongyang', '15631030706'), ('caiweiwei', '15631030717'), ('jack', '18'),
     ('lucy', '19'), ('mengmeng', '123456789'))

    这样就显示出来了 但是如果想再显示一次怎么办呢?

    >>> cur.scroll(0,'absolute')

    没错就是他 , 他可以让游标指针跳到你想要的位置 . 其实还有一个fetchone这个东西和fetchall 有什么区别呢 ? 自己观察一下 单词就行了 .

  • 相关阅读:
    台州 OJ 3847 Mowing the Lawn 线性DP 单调队列
    洛谷 OJ P1417 烹调方案 01背包
    快速幂取模
    台州 OJ 2649 More is better 并查集
    UVa 1640
    UVa 11971
    UVa 10900
    UVa 11346
    UVa 10288
    UVa 1639
  • 原文地址:https://www.cnblogs.com/A-FM/p/5808461.html
Copyright © 2020-2023  润新知