python-Mysql数据库

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


一. MySQL

MySQL 是 Web 世界中使用最广泛的数据库服务器。MySQL 内部有多种数据库引擎,最常用的引擎是支持数
据库事务的 InnoDB。


1>在shell中
安装MySQL

  MySQL-python.x86_64与mariadb-server

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

• 配置文件为/etc/my.cnf;
• 修改数据库默认的编码全部改为 UTF­8;
     charset='utf-8'
• 查看编码格式:show variables like '%char%';
• 安装MySQL­python,封装了 MySQL C 驱动的 Python 驱动。


shell操作:
   yum install MySQL-python.x86_64 -y
   yum install  mariadb-server -y
  systemctl start mariadb.service
  systemctl enable mariadb.service
  mysql_secure_installation
  mysql -uroot -p
MariaDB [(none)]> create database  hello
    -> ;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> quit


vim /etc/my.cnf

systemctl restart mariadb.service
systemctl status mariadb

二 在ipython中
1.  import MySQLdb

2.一个完整的数据库操作

(1)建立MySQL连接

conn = MySQLdb.connect(host='localhost', user='root',passwd='123456', db='testpython', port=3306,charset='utf8')


#######################################
host : MySQL 数据库地址
user: 数据库登陆用户名
passwd: 数据库登陆密码
db: 登陆数据库后,需要操作的库名
port: 数据库监听端口,默认为 3306
charset: 数据库编码MySQL连接操作
##########################################

(2)创建一个数据库游标

 cur = conn.cursor()

(3) 对数据库的操作

  1)cursor() 游标指针
cursor() 提供的方法来进行操作,方法主要是 :
1. 执行命令
2. 接收结果游标操作


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

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



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

多条数据的插入:
(a)sql = "INSERT INTO member (username,password,email)values ('%s','%s','%s')" % ('walter.liu','123456','zheshiz2@163.com')

cur.execute(sql)
(b)In [10]: sqli = "insert into userinfo value(%s,%s)"   ####定义一个插入变量


In [11]: cur.executemany(sqli,[('q','1'),('s','2')])  ####用这个变量执行多条数据快速插入
Out[11]: 2L

 #############查询数据#############

• fetchall(self): 接收全部的返回结果行 .
• fetchmany(size=None): 接收 size 条返回结果行 . 如果 size 的值大于返回的结果行的数量 , 则会返回 cursor.arraysize 条数据 .
• fetchone(): 返回一条结果行 .
• scroll(value, mode='relative'): 移动指针到某一行 .
  如果 mode='relative', 则表示从当前所在行移动 value 条 ;
  如果 mode='absolute', 则表示从结果集的第一行移动 value 条;
• rollback() 如果有权限,就取消当前的操作,否则报错


(4)conn.commit()  # 提交事务
(5)关闭游标
(7)断开连接

3.ipython完整操作:

[root@foundation21 ~]# ipython
In [1]: import MySQLdb                        ####导入数据库,MySQL-python与mariadb-server安装是否成功

In [2]: conn = MySQLdb.connect(host ='localhost',user ='root',passwd='qwer1234',db='hello')
                                                                 ####建立MySQL连接
In [3]: cur = conn.cursor()                    #### 创建一个数据库游标

In [5]: cur.                                                ####游标操作
cur.DataError          cur.arraysize          cur.fetchone
cur.DatabaseError      cur.callproc           cur.lastrowid
cur.Error              cur.close              cur.messages
cur.IntegrityError     cur.connection         cur.nextset
cur.InterfaceError     cur.description        cur.rowcount
cur.InternalError      cur.description_flags  cur.rownumber
cur.MySQLError         cur.errorhandler       cur.scroll
cur.NotSupportedError  cur.execute            cur.setinputsizes
cur.OperationalError   cur.executemany        cur.setoutputsizes
cur.ProgrammingError   cur.fetchall           
cur.Warning            cur.fetchmany          

In [5]: cur.execute('use hello;')              ####进入hello数据库
Out[5]: 0L

In [6]: cur.execute('create table userinfo(username varchar(10),paswd varchar(10));')  
                                                                   ####建立userinfo表
Out[6]: 0L

In [7]: cur.execute('desc userinfo;')    ####查看userinfo表的结构
Out[7]: 2L

In [8]: cur.execute('insert into userinfo value("qwe","123");')  #####向userinfo表中插入一条数据
Out[8]: 1L

In [9]: cur.execute('insert into userinfo value("asd","987");') 
Out[9]: 1L

In [10]: sqli = "insert into userinfo value(%s,%s)"       ####定义一个插入变量


In [11]: cur.executemany(sqli,[('q','1'),('s','2')])               ####用这个变量执行多条数据快速插入
Out[11]: 2L

In [12]: cur.execute('select * from userinfo;')                 ####查看表的内容
Out[12]: 4L

In [13]: cur.fetchone()    #####表中内容一条一条查看
Out[13]: ('qwe', '123')

In [14]: cur.fetchone()
Out[14]: ('asd', '987')

In [15]: cur.fetchone()
Out[15]: ('q', '1')

In [16]: cur.fetchone()
Out[16]: ('s', '2')

In [17]: cur.fetchone() ####表中内容一条一条查看完结,显示为空

In [18]: cur.fetchall()   ####游标指向最后,查看结果为空
Out[18]: ()

In [19]: cur.scroll(0,'absolute')  #####移动指针到表的开始

In [20]: cur.fetchall()                   ####一次查看所有内容  
Out[20]: (('qwe', '123'), ('asd', '987'), ('q', '1'), ('s', '2'))


In [22]: cur.fetchmany(5)           ###一次查看多条内容,游标指向最后,查看结果为空
Out[22]: ()

In [23]: cur.scroll(0,'absolute')  ####移动指针到表的开始

In [24]: cur.fetchmany(5)           ###一次查看多条内容
Out[24]: (('qwe', '123'), ('asd', '987'), ('q', '1'), ('s', '2'))

In [25]: conn.commit()              ####提交事物   

In [26]: cur.close()                      ###关闭游标

In [27]: conn.close()                  ####断开连接


在pycharm中执行数据库插入时异常处理机制截图:


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值