• python操作三大主流数据库(2)python操作mysql②python对mysql进行简单的增删改查


    python操作mysql②python对mysql进行简单的增删改查
    
    1.设计mysql的数据库和表
    
    id:新闻的唯一标示
    title:新闻的标题
    content:新闻的内容
    created_at:新闻添加的时间
    types:新闻的类型
    image:新的缩略图
    author:作者
    view_count:浏览量
    is_valid:删除标记
    
    # 创建新闻数据库
    create database news charset=utf8;
    
    # 创建新闻表
    create table news(
        id int primary key auto_increment,
        title varchar(200) not null,
        content varchar(2000) not null,
        types varchar(10) not null,
        image varchar(300) null,
        author varchar(20) null,
        view_count int default 0,
        created_at datetime null,
        is_valid smallint default 1
    ) default charset="utf8";
    '''
    
    插入数据
    INSERT INTO `news` VALUES ('1', '朝鲜特种部队视频公布 展示士兵身体素质与意志', '新闻内容', '推荐', '/static/img/news/01.png', null, '0', null, '1');
    INSERT INTO `news` VALUES ('2', '男子长得像"祁同伟"挨打 打人者:为何加害检察官', '新闻内容', '百家', '/static/img/news/02.png', null, '0', null, '1');
    INSERT INTO `news` VALUES ('3', '导弹来袭怎么办?日本政府呼吁国民堕入地下通道', '新闻内容', '本地', '/static/img/news/03.png', null, '0', null, '1');
    INSERT INTO `news` VALUES ('4', '美监:朝在建能发射3发以上导弹的3000吨级新潜艇', '新闻内容', '推荐', '/static/img/news/04.png', null, '0', null, '1');
    INSERT INTO `news` VALUES ('5', '证监会:前发审委员冯小树违法买卖股票被罚4.99亿', '新闻内容', '百家', '/static/img/news/08.png', null, '0', null, '1');
    INSERT INTO `news` VALUES ('6', '外交部回应安倍参拜靖国神社:同军国主义划清界限', '新闻内容', '推荐', '/static/img/news/new1.jpg', null, '0', null, '1');
    INSERT INTO `news` VALUES ('7', '"萨德"供地违法?韩民众联名起诉要求撤回供地', '新闻内容', '百家', '/static/img/news/new2.jpg', null, '0', null, '1');
    INSERT INTO `news` VALUES ('10', '标题1', '新闻内容1', '推荐', '/static/img/news/01.png', null, '0', null, '1');
    
    
    2.python简单操作mysql之数据库的连接和简单获取数据
    #encoding:utf-8
    
    import MySQLdb
    
    '''
    # 简单的连接
    # 获取连接
    conn = MySQLdb.connect(
        host = '127.0.0.1',
        user = 'root',
        password = '',
        db = 'news',
        port = 3306,
        charset = 'utf8'
    )
    
    # 获取数据
    cursor = conn.cursor()
    cursor.execute('select * from news order by created_at desc')
    rest = cursor.fetchone()
    print(rest)
    
    # 关闭连接
    conn.close()
    
    3.python简单操作mysql之数据库的连接和简单获取数据改进之捕获异常
    
    # 捕获异常
    # 获取连接
    try:
        conn = MySQLdb.connect(
            host = '127.0.0.1x',
            user = 'root',
            password = '',
            db = 'news',
            port = 3306,
            charset = 'utf8'
        )
    
        # 获取数据
        cursor = conn.cursor()
        cursor.execute('select * from news order by created_at desc')
        rest = cursor.fetchone()
        print(rest)
    
        # 关闭连接
        conn.close()
    except MySQLdb.Error as e:
        print('mysql error:%s' % e)
    
    
    4.python简单操作mysql之数据库的连接和单获取所有数据
    # 获取连接
    try:
        conn = MySQLdb.connect(
            host = '127.0.0.1',
            user = 'root',
            password = '',
            db = 'news',
            port = 3306,
            charset = 'utf8'
        )
    
        # 获取数据
        cursor = conn.cursor()
        cursor.execute('select * from news')
        rows = cursor.fetchall()
        print(cursor.description)
    
        for row in rows:
            print(row)
    
        # 关闭连接
        conn.close()
    except MySQLdb.Error as e:
        print('mysql error:%s' % e)
    
    
    5.python简单操作mysql之数据库的操作类
    
    class MysqlConnection(object):
    
        # 初始化
        def __init__(self, host = '127.0.0.1', port = 3306, user = 'root', password = '', db = 'news',charset='utf8'):
            self._host = host
            self._port = port
            self._user = user
            self._password = password
            self._db = db
            self._charset = charset
            self._conn = None
            self._cursor = None
            self.get_conn()
    
        # 关闭数据库连接
        def close(self):
            if self._cursor:
                self._cursor.close()
                self._cursor = None
    
            if self._conn:
                self._conn.close()
                self._conn = None
    
        def commit(self):
            self._conn.commit()
    
        # 获取数据库连接
        def get_conn(self):
            try:
                self._conn = MySQLdb.connect(
                    host = self._host,
                    user = self._user,
                    password = self._password,
                    db = self._db,
                    port = self._port,
                    charset = self._charset
                )
    
                self._cursor = self._conn.cursor()
            except MySQLdb.Error as e:
                print('mysql error:%s' % e)
    
    
        # 获取单条新闻
        def get_one(self):
    
            sql = 'select * from news where types = %s order by created_at desc'
            # 获取数据
            self._cursor.execute(sql,('百家',))
            rest = dict(zip([k[0] for k in self._cursor.description], self._cursor.fetchone()))
    
            # 关闭连接
            self.close()
            return rest
    
        # 获取多条新闻
        def get_more(self):
    
            sql = 'select * from news where types = %s order by created_at desc'
            # 获取数据
            self._cursor.execute(sql,('百家',))
            rest = [dict(zip([k[0] for k in self._cursor.description], row)) 
            for row in self._cursor.fetchall()]
    
            # 关闭连接
            self.close()
            return rest
    
        def add_one(self):
            sql = 'insert into news(title,image,content,types,is_valid) values(%s, %s, %s, %s, %s)'
            self._cursor.execute(sql, ('标题1','/static/img/news/01.png', '新闻内容1','推荐',1))
            self.commit()
            self.close()
    
    def main():
        obj = MysqlConnection()
        # rst = obj.get_more()
        # rst = obj.get_one()
        # print(rst)
        obj.add_one()
    
    if __name__ == "__main__":
        main()
  • 相关阅读:
    HDU4477 Cut the rope II 递推
    HDU4571 Travel in time 动态规划
    在VS2010中使用$err,hr快速查看当前GetLastError()的值
    对C语言的volatile关键字的理解
    三星S6D1121主控彩屏(240*320*18bit,262K)图形设备接口(GDI)实现
    C语言创建二叉树数据结构, 以及各种遍历
    Ubuntu下使用Dr.com宽带客户端上网的步骤
    8051单片机学习笔记/概要/总结/备忘
    联想笔记本电脑Ubuntu系统下触摸板的锁定
    [MSP430] 集成开发环境 IAR Embedded Workbench for MSP430 5.50
  • 原文地址:https://www.cnblogs.com/reblue520/p/8405218.html
Copyright © 2020-2023  润新知