python操作mysql练习

备忘录:
        练习,即可。
1.测试代码
        包括,创建表,插入、更新、查询、删除。

import pymysql
import traceback
# PyMySQL是在Python3.x版本中用于连接MySQL服务器的一个库

class MysqlUtils:
    def __init__(self,host,port,dbName,user,password,charset='utf8'):
        #获取mysql连接
        self.conn = pymysql.connect(host=host,port=port,db=dbName,user=user,password=password,charset=charset)
    def common(self,sql,param=[]):
        try:
            cur = self.conn.cursor()
            rows = cur.execute(sql,param)
            self.conn.commit()
            cur.close()
            self.conn.close()
            return rows
        except Exception as e:
            traceback.print_exc()
            self.conn.rollback()

    def insert(self,sql,param):
        return self.common(sql,param)

    def update(self,sql,param):
        return self.common(sql,param)

    def delete(self,sql,param):
        return self.common(sql,param)

    def fetchOne(self,sql,param=[]):
        """一条记录"""
        try:
            cur = self.conn.cursor()
            cur.execute(sql,param)
            row = cur.fetchone()
            cur.close()
            self.conn.close()
            return row
        except Exception as e:
            traceback.print_exc()

    def fetchAll(self,sql,param):
        """多条记录"""
        try:
            cur = self.conn.cursor()
            cur.execute(sql,param)
            rows = cur.fetchall()
            cur.close()
            self.conn.close()
            return rows
        except Exception as e:
            traceback.print_exc()

    def createTable(self,sqlDelete,sqlCreate):
        """建表"""
        try:
            cur = self.conn.cursor()
            # 表存在就先删除
            cur.execute(sqlDelete)
            # 重建表
            cur.execute(sqlCreate)
            cur.close()
            self.conn.close()
        except Exception as e:
            traceback.print_exc()

def main():
    host = "localhost"
    port = 3306
    dbName = "demodb"
    user = "root"
    password = "123456"
    charset = 'utf8'
    utils = MysqlUtils(host,port,dbName,user,password,charset)

    #1.测试建表
    sqlDelete ="DROP TABLE IF EXISTS t_city_demo"
    sqlCreate ="CREATE TABLE `t_city_demo` ( \
                `CITY_NAME` VARCHAR(64) COLLATE utf8_bin NOT NULL COMMENT '城市名',\
                `LAND_AREA` DOUBLE DEFAULT NULL COMMENT '城市面积' \
                 ) ENGINE=INNODB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='城市信息表'"
    utils.createTable(sqlDelete,sqlCreate)

    #2.测试插入
    sql = "INSERT INTO t_city (CITY_NAME,LAND_AREA,POPULATION,GROSS,AREA_NUMBER,POSTAL_CODE,TELEPHONE_CODE,CAR_CODE,CITY_DESCRIBE) \
            VALUES('杭州','8586','850','12000','330100','310000','0571','浙A','互联网城市')"
    utils.insert(sql,None)

    sql = "INSERT INTO t_city (CITY_NAME,LAND_AREA,POPULATION,GROSS,AREA_NUMBER,POSTAL_CODE,TELEPHONE_CODE,CAR_CODE,CITY_DESCRIBE) \
                VALUES(%s,%s,%s,%s,%s,%s,%s,%s,%s)"
    utils.insert(sql, ['宁波','8586','850','12000','330200','310000','0574','浙B','新型城市'])

    #3.测试更新
    sql = "UPDATE t_city SET LAND_AREA = '9000',POPULATION = '900' WHERE CITY_NAME='宁波'"
    utils.insert(sql, None)

    sql = "UPDATE t_city SET LAND_AREA = %s ,POPULATION = %s  WHERE CITY_NAME= %s  "
    utils.insert(sql, ['9900','990','宁波'])

    #4.测试查询
    sql = "SELECT CITY_NAME,LAND_AREA,POPULATION,GROSS,AREA_NUMBER,POSTAL_CODE,TELEPHONE_CODE,CAR_CODE,CITY_DESCRIBE FROM t_city WHERE  CITY_NAME= %s "
    row = utils.fetchOne(sql,['宁波'])
    for one in row:
        print(one)
    sql = "SELECT CITY_NAME,LAND_AREA,POPULATION,GROSS,AREA_NUMBER,POSTAL_CODE,TELEPHONE_CODE,CAR_CODE,CITY_DESCRIBE FROM t_city WHERE  CITY_NAME= %s or CITY_NAME= %s"
    rows = utils.fetchAll(sql,['宁波','杭州'])
    print(rows)
    for row in rows:
        for one in row:
            print(one)

    sql = "SELECT CITY_NAME,LAND_AREA,POPULATION,GROSS,AREA_NUMBER,POSTAL_CODE,TELEPHONE_CODE,CAR_CODE,CITY_DESCRIBE FROM t_city WHERE  CITY_NAME= %s or CITY_NAME= %s"
    rows = utils.fetchAll(sql,['宁波','杭州'])
    print(rows)
    #遍历方式
    for row in rows:
        cityName = row[0]
        landArea = row[1]
        print("cityName=%s,landArea=%s"%(cityName,landArea))

    #5.测试删除
    sql = "DELETE FROM t_city WHERE city_name= %s "
    utils.delete(sql,'杭州')

    sql = "DELETE FROM t_city WHERE city_name= %s or city_name= %s  "
    utils.delete(sql, ['杭州','宁波'])

if __name__ == '__main__':
    main()

2.建表语句一

CREATE TABLE `t_city_demo` (
  `CITY_NAME` VARCHAR(64) COLLATE utf8_bin NOT NULL COMMENT '城市名',
  `LAND_AREA` DOUBLE DEFAULT NULL COMMENT '城市面积',
  `POPULATION` BIGINT(16) DEFAULT NULL COMMENT '城市人口'
) ENGINE=INNODB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='城市信息表'

3.建表语句二

CREATE TABLE `t_city` (
  `CITY_NAME` varchar(64) COLLATE utf8_bin NOT NULL COMMENT '城市名',
  `LAND_AREA` double DEFAULT NULL COMMENT '城市面积',
  `POPULATION` bigint(16) DEFAULT NULL COMMENT '城市人口',
  `GROSS` double DEFAULT NULL COMMENT '生产总值',
  `AREA_NUMBER` varchar(64) COLLATE utf8_bin DEFAULT NULL COMMENT '行政区划代码',
  `POSTAL_CODE` varchar(64) COLLATE utf8_bin DEFAULT NULL COMMENT '邮政编码',
  `TELEPHONE_CODE` varchar(64) COLLATE utf8_bin DEFAULT NULL COMMENT '电话区号',
  `CAR_CODE` varchar(64) COLLATE utf8_bin DEFAULT NULL COMMENT '车牌代码',
  `CITY_DESCRIBE` varchar(512) COLLATE utf8_bin DEFAULT NULL COMMENT '城市描述'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='城市信息表'

以上,感谢。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值