python_mysql

"""
查询操作
"""
import MySQLdb

# 1. 创建连接对象
from MySQLdb.cursors import DictCursor

conn = MySQLdb.connect(host='', port=,
                       user='root', password='',
                       database='', charset='utf8mb4')
try:
    # 2. 获取游标对象with conn.cursor(cursorclass=DictCursor) as cursor:
        # 3. 通过游标对象向数据库发出SQL语句获取执行结果
​        cursor.execute('select dno as no, dname as name, dloc as location from tb_dept')
        # 4. 通过游标抓取数据for dept in cursor.fetchall():"""
​            fetchall    是抓取全部
​            fetchone    是抓取一个
​            fetchmany(N)    是抓取N个
​            """print(f'{dept["name"]}\t{dept["location"]}')
except MySQLdb.MySQLError as err:print(err)
finally:
    # 5. 关闭数据库连接(释放资源)
​    conn.close()
"""
更新数据
"""
import MySQLdb

no = int(input('编号:'))
location = input('所在地:')
"""
修改某个编号的部门的所在地
"""

# 1. 创建连接对象
conn = MySQLdb.connect(host='', port=,
                       user='', password='',
                       database='', charset='utf8')
try:
    # 2. 获取游标对象
    with conn.cursor() as cursor:
        # 3. 通过游标对象向数据库发出SQL语句获取执行结果
        affected_rows = cursor.execute(
            'update tb_dept set dloc=%s where dno=%s',
            (location, no)
        )
        if affected_rows == 1:
            print('更新部门成功')
    # 4. 提交事务
    conn.commit()
except MySQLdb.MySQLError as err:
    print(err)
    # 4. 回滚事务
    conn.rollback()
finally:
    # 5. 关闭数据库连接(释放资源)
    conn.close()
"""
pip config set global.index-url https://pypi.douban.com/simple
pip install mysqlclient
pip install pymysql
pip uninstall -y pymysql
pip list
pip freeze > requirements.txt
pip install -r requirements.txt
pip check
SQL注射攻击(SQL Injection)
"""
import MySQLdb

no = int(input('编号:'))
name = input('名称:')
location = input('所在地:')

# 1.创建连接对象
conn = MySQLdb.connect(host='', port=,
                       user='', password='',
                       database='', charset='utf8mb4')


try:
    # 2. 获取游标对象
    with conn.cursor() as cursor:
        # 3. 通过游标对象向数据库发出SQL语句获取执行结果
        affected_rows = cursor.execute(
            'insert into tb_dept values (%s, %s, %s)',
            (no, name, location)
        )
        if affected_rows == 1:
            print('新增部门成功')
    # 4. 提交事务
    conn.commit()
except MySQLdb.MySQLError as err:
    print(err)
    # 4. 回滚事务
    conn.rollback()
finally:
    # 5. 关闭数据库连接(释放资源)
    conn.close()
"""
将查询到的数据保存为execl表(xls)


读取数据写入Excel文件
一个Excel文件 ---> 工作簿 ---> workbook
一个工作簿下面可以有一个或多个工作表 ---> sheet
"""
import xlwt
import MySQLdb

# 1. 创建连接对象

conn = MySQLdb.connect(host='', port=,
                       user='', password='',
                       database='', charset='utf8mb4')
try:
    # 2. 获取游标对象
    with conn.cursor() as cursor:
        # 3. 通过游标对象向数据库发出SQL语句获取执行结果
        cursor.execute(
            'select eno, ename, job, sal, dname from tb_emp t1 '
            'inner join tb_dept t2 on t1.dno=t2.dno'
        )
        wb = xlwt.Workbook()
        sheet = wb.add_sheet('员工信息表')
        titles = ('工号', '姓名', '职位', '月薪', '部门')
        title_style = xlwt.XFStyle()
        font = xlwt.Font()
        font.name = '行楷-简'
        font.height = 400
        font.colour_index = 4
        font.bold = True
        title_style.font = font
        aligment = xlwt.Alignment()
        aligment.horz = xlwt.Alignment.HORZ_CENTER
        aligment.vert = xlwt.Alignment.VERT_CENTER
        title_style.alignment = aligment
        for col_index, title in enumerate(titles):
            sheet.write(0, col_index, title)
        for row_index, row in enumerate(cursor.fetchall()):
            for col_index, value in enumerate(row):
                sheet.write(row_index + 1, col_index, value)

        wb.save('hrs.xls')
        """
        保存到指定地址在文件名前面加绝对路径!
        """
        # 4. 通过游标抓取数据


except MySQLdb.MySQLError as err:
    print(err)
    conn.rollback()
finally:
    # 5. 关闭数据库连接(释放资源)
    conn.close()
import xlrd

# 使用xlrd模块的open_workbook函数打开指定Excel文件并获得Book对象(工作簿)
wb = xlrd.open_workbook('阿里巴巴2017年股票数据.xlsx')
# 通过Book对象的sheet_names方法可以获取所有表单名称
sheetname = wb.sheet_names()[0]
# 通过指定的表单名称获取Sheet对象(工作表)
sheet = wb.sheet_by_name(sheetname)
# 通过Sheet对象的nrows和ncols属性获取表单的行数和列数
print(sheet.nrows, sheet.ncols)
for row in range(sheet.nrows):
    for col in range(sheet.ncols):
        # 通过Sheet对象的cell方法获取指定Cell对象(单元格)
        # 通过Cell对象的value属性获取单元格中的值
        value = sheet.cell(row, col).value
        # 对除首行外的其他行进行数据格式化处理
        if row > 0:
            # 第1列的xldate类型先转成元组再格式化为“年月日”的格式
            if col == 0:
                # xldate_as_tuple函数的第二个参数只有0和1两个取值
                # 其中0代表以1900-01-01为基准的日期,1代表以1904-01-01为基准的日期
                value = xlrd.xldate_as_tuple(value, 0)
                value = f'{value[0]}年{value[1]:>02d}月{value[2]:>02d}日'
            # 其他列的number类型处理成小数点后保留两位有效数字的浮点数
            else:
                value = f'{value:.2f}'
        print(value, end='\t')
    print()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值