学python要会mysql吗_python学习之Mysql

#######MySQL 数据库使用 ########

1.MySQL

MySQL 是 Web 世界中使用最广泛的数据库服务器。

MySQL 内部有多种数据库引擎,最常用的引擎是支持数据库事务的 InnoDB。

安装MySQL

• 一定要进行设置密码,确保数据库安全;

• 配置文件为/etc/my.cnf 写入charset='utf8';

• 修改数据库默认的编码全部改为 UTF­8;

• 查看编码格式:show variables like '%char%';

• 安装MySQL­python,封装了 MySQL C 驱动的 Python 驱动。

[root@server ~]# yum install mariadb-server.x86_64 MySQL-python.x86_64 -y        ##安装服务

Loaded plugins: langpacks

Package 1:mariadb-server-5.5.35-3.el7.x86_64 already installed and latest version

Package MySQL-python-1.2.3-11.el7.x86_64 already installed and latest version

Nothing to do

7096dd83064b1c8d0ba6d68a396e4c42.png

[root@server ~]# systemctl start mariadb

[root@server ~]# systemctl enable mariadb.service

ln -s '/usr/lib/systemd/system/mariadb.service' '/etc/systemd/system/multi-user.target.wants/mariadb.service'

[root@server ~]# mysql_secure_installation         ##数据库初始化

bb39c280b1a5114d035f2c023d746d23.png

[root@server ~]# mysql -uroot -pwestos            ##登陆

MariaDB [(none)]> create database hello;        ##创建数据库

Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> show databases;

+--------------------+

| Database           |

+--------------------+

| information_schema |

| hello              |

| mysql              |

| performance_schema |

+--------------------+

4 rows in set (0.00 sec)

403a93ad8fa323ffb338587a92080e43.png

[root@server ~]# vim  /etc/my.cnf            ## 修改数据库默认的编码全部改为 UTF­8,解决汉字的问题

14 charset='utf8'

[root@server ~]# systemctl restart mariadb.service

[root@server ~]# ipython

In [1]: import MySQLdb                    ##导入MySQLdb模块

9d4823df4ea17d5e312cdebd1595e395.png

2.建立MySQL连接

•host : MySQL 数据库地址 本地localhost ,其他直接指定ip

•user: 数据库登陆用户名

•passwd: 数据库登陆密码

•db: 登陆数据库后,需要操作的库名

•port: 数据库监听端口,默认为 3306

•charset: 数据库编码MySQL连接操作

• commit() 如果数据库表进行了修改,提交保存当前的数据,提交后登录才可查看到。

• rollback() 如果有权限,就取消当前的操作,否则报错

• cursor() 游标指针。

In [3]: conn = MySQLdb.connect(host='localhost',user='root',passwd='westos',db='hello')

3.游标操作

# 创建一个数据库游标

cursor() 提供的方法来进行操作,方法主要是 :

1. 执行命令

2. 接收结果

In [3]: cur = conn.cursor()

In [5]: cur.execute('use hello;')

Out[5]: 0L

4.插入数据

cursor 执行命令的方法:

•execute(query, args): 执行单条 sql 语句。 query 为 sql 语句本身, args 为参数值的列表。执行后返回值为受影响的行数。

•executemany(query, args): 执行单条 sql 语句 , 但是重复执行参数列表里的参数 , 返回值为受影响的行数

•conn.commit()提交事务

日常工作中,大多数会先拼接一个 SQL 语句 然后再执行,实现插入数据的操作:

In [7]: cur.execute('create table userinfo (username varchar(8),passwd varchar(8));')    ##创建表写入数据

Out[7]: 0L

063c00f459ebb20278dca9e8ba9265c8.png

In [8]: cur.execute('insert into userinfo value("aaa","123");')        ##单条插入数据

Out[8]: 1L

In [9]: sqli = 'insert into userinfo value (%s,%s)'

In [11]: cur.executemany(sqli,[('sss','123'),('ddd','123')])        ##多条插入数据

Out[11]: 2L

In [12]: cur.execute('select * from userinfo;')                ##查询数据内容,execute只显示行数,不显示内容

Out[12]: 3L

In [13]: cur.fetc                            ##显示内容的三种用法

cur.fetchall   cur.fetchmany  cur.fetchone

In [13]: cur.fetchone()                            ##一行一行显示

Out[13]: ('aaa', '123')

In [14]: cur.fetchone()

Out[14]: ('sss', '123')

In [15]: cur.fetchone()

Out[15]: ('ddd', '123')

In [16]: cur.fetchone()                            ##读完后游标指在最后

8e29f1abc08d2d671ca4f774d6e9c7ed.png

In [17]: cur.fetchall()

Out[17]: ()

In [18]: cur.scroll(0,'absolute')

In [19]: cur.fetchall()                            ##fetchall(self): 接收全部的返回结果行

Out[19]: (('aaa', '123'), ('sss', '123'), ('ddd', '123'))

In [20]: cur.fetc()

cur.fetchall   cur.fetchmany  cur.fetchone

In [20]: cur.fetchmany(3)

Out[20]: ()

In [21]: cur.scroll(0,'absolute')                    ##从结果集的第一行移动0条,即游标移动到开头

In [22]: cur.fetchmany(3)

Out[22]: (('aaa', '123'), ('sss', '123'), ('ddd', '123'))

9ee344fd5846ad089c980bc78ef4b116.png

72c74ac1224d17e8dc3ecb9aaadd7b94.png

In [23]: conn.commit()                            ##conn.commit()提交数据,提交后操作才可生效

In [24]: cur.close()

In [25]: conn.close()

b3c0162e6e9aa97f79b13715f89c3062.png

• fetchmany(size=None): 接收 size 条返回结果行 . 如果 size 的值大于返回的结果行的数量 , 则会返回 cursor.arraysize 条数据 . • scroll(value, mode='relative'): 移动指针到某一行 .如果 mode='relative', 则表示从当前所在行移动 value 条 ;                                                     如果 mode='absolute', 则表示从结果集的第一行移动 value 条;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值