#######MySQL 数据库使用#########
据库事务的 InnoDB。
1>在shell中
安装MySQL
MySQL-python.x86_64与mariadb-server
• 一定要进行设置密码,确保数据库安全;
mysql_secure_installation
• 配置文件为/etc/my.cnf;
• 修改数据库默认的编码全部改为 UTF8;
charset='utf-8'
• 查看编码格式:show variables like '%char%';
• 安装MySQLpython,封装了 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
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 为参数值的列表。执行后返回值为受影响的行数。
#######插入数据##########
日常工作中,大多数会先拼接一个 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中执行数据库插入时异常处理机制截图:
一. MySQL
MySQL 是 Web 世界中使用最广泛的数据库服务器。MySQL 内部有多种数据库引擎,最常用的引擎是支持数据库事务的 InnoDB。
1>在shell中
安装MySQL
MySQL-python.x86_64与mariadb-server
• 一定要进行设置密码,确保数据库安全;
mysql_secure_installation
• 配置文件为/etc/my.cnf;
• 修改数据库默认的编码全部改为 UTF8;
charset='utf-8'
• 查看编码格式:show variables like '%char%';
• 安装MySQLpython,封装了 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.servicesystemctl 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中执行数据库插入时异常处理机制截图: