python操作数据库Mysql

mysql基础语法


DDL(数据定义语句)

CREATE TABLE/DATABASE (创建表单)
ALERT TABLE/DATABASE (更改表单)
DROP TABLE/DATABASE (删除表单)

DML(数据管理语句)

INSERT(增)/DELETE(删)/UPDATE(改)SELECT(查)


创建数据库并使用

一般我们用大写来写mysql预定义的关键字和保留字

-- mysql的注释写法
DROP DATABASE `mydatabase` IF EXISTS;
CREATE DATABASE `mydatabase`;
USE `mydatabase`;

建表语句

-- 创建前删除原有的表
DROP DATABASE IF EXISTS `mydatabase`;

CREATE TABLE `mytables`(
    `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    `name` VARCHAR(200) NOT NULL,
    `sex` CHAR(1) NULL,
    `time_in` DATETIME NULL
) DEFAULT CAHRSET 'UTF8'

常见数值类型

int char varchar datetime

NOT NULL : 不为空
AUTO_INCREMENT : 自增
PRIMARY KEY : 主键
DEFAULT CHARSET ‘UTF8’ : 默认字符集为‘utf-8’

插入语句

INSERT INTO `mytables` VALUE(1,'李白','剑仙','男',now());
-- now() 为mysql内置函数 表示当前时间
INSERT INTO `mytables`(`name`,`nickname`) VALUES
('关羽','二哥'),
('张飞''三哥')
;

查询语句

SELECT `id`,`name`,`nickname` FROM `mytables` where `sex`='男' ORDER BY `id` DESC
HAVING `nickname` LIMIT 0,2;
-- ORDER BY : 查询顺序 ASC正序 DESC倒序
-- LIMIT : 分页
-- HAVING : 对上面已经分组的数据进行过滤的条件 

修改语句

在进行删除或者修改表中的 数据时,必须要添加WHERE语句,否则后果自负···

UPDATE `mytables` SET `set`='女' WHERE 'sex'='男';

删除语句

DELETE FROM `students` WHERE `sex`='';

python 安装MySQLdb模块与语法


windows下安装 : pip install MySQL-python

但是经常会发现出错,这个时候可以去下载编译好的文件

下载好之后保存在你安装python的根目录下 然后运行:

pip install mysqlclient-1.3.12-cp36-cp36m-win_amd64.whl

之后就可以大功告成了!

使用python连接mysql数据库

import MySQLdb
#获取连接
try:
    conn = MySQLdb.connect(
        host = 'localhost',
        port = 3306,
        user = 'root',
        password = '123456',
        db = 'flask_news',
        charset = 'utf8')
    #获取数据 准备SQL
    sql = 'SELECT * FROM `mydatabase`'
    #执行SQL
    cursor = conn.cursor()
    try:
        data = cursor.excute(sql)
        print(data)
        #打印结果
        rows = cursor.fetchall()
        print(cursor.description)
        for row in rows:
            print(row)
    except MySQL.Error as e:
        print('Error %d: %s' % (e.args[0], e.args[1]))
    #关闭连接
    conn.close()
except MySQLdb.Error as e:
    print('Error %d:%s' % (e.args[0], e.args[1]))
return self.con

下面是一个python操作数据库的实例:

import MySQLdb

#创建一个类,封装数据库所有的操作
class MysqlHandle(object):
    def __init__(self):
        self.get_conn()
    #获取连接
    def get_conn(self):
        try:
            self.conn = MySQLdb.connect(
                host='127.0.0.1',
                user='root',
                password='',
                db='mydatabase',
                port=3306,
                charset='utf8'
            )
        except MySQLdb.Error as e:
            print('Error:',e)

    #关闭连接
    def close_conn(self):
        try:
            if self.conn:
                self.conn.close()
        except MySQLdb.Error as e:
            print('Error',e)

    #查询单条数据
    def get_one(self):
        sql = 'SELECT * FROM `mydatabase` WHERE `sex` = %s ORDER BY `id` DESC;'
        cursor = self.conn.cursor()
        cursor.excute(sql, ('something'))
        #此时拿到的数据为元组,查询行数可以用 cursor.rowcount
        #查询数据的描述,可以用 cursor.description
        #将数据由元组转化为字典
        data = dict(zip([k[0] for k in cursor.description],cursor.fetchone()))
        cursor.close()
        self.conn.close_conn()
        return rest

    #查询多条数据 以及分页查询
    def get_more(self, page, page_size):
        offset = (page - 1) * page_size
        sql = 'SELECT * FROM `mydatabase` WHERE `sex` = %s ASC LIMIT %s %s;'
        cursor = self.conn.cursor()
        cursor.execute(sql, ('something',offset, page_size))
        rest = [dict(zip([k[0] for k in cursor.description], row)) for row in cursor.fetchall()]
        cursor.close()
        self.conn.close_conn()
        return rest

    #添加一条数据 
    def add_one(self):
        try:
        #小技巧 : 将语句变为元组,可以换行
            sql = (
            "INSERT INTO `mydatabase`(`title`) VALUE"
            "(%s);"
            )
            cursor = self.conn.cursor()
            cursor.execute(sql,('something'))
            self.conn.commit()
            cursor.close()
        except:
            print('error')
            '''
            数据回滚,是数据库中事物的执行,有一条插入失败,所有的都不插入,数据库回滚到操作之前的样子
            '''
            self.conn.rollback()
            self.close_conn()
#执行函数 操作数据库
def main():
    obj = MysqlHandle()
    obj.add_one()
'''
if __name__ == '__main__'的意思是:
当.py文件被直接运行时,if __name__ == '__main__'之下的代码块将被运行;
当.py文件以模块形式被导入时,if __name__ == '__main__'之下的代码块不被运行。
'''
if __name__ == '__main__'
    main()      

python操作mysql的操作大致流程就是这些,当然还有不完善的地方,想继续深入了解的话得去看官网的介绍了,在这里与各位正在学习python的猿们共勉^-^

猜你喜欢

转载自blog.csdn.net/weixin_41676178/article/details/81011260