首先要安装Python和MySQL的连接工具
下载地址如下:
https://pypi.python.org/pypi/PyMySQL
https://github.com/PyMySQL/PyMySQL
脚本如下:
#coding = utf-8
import pymysql
import os
#连接数据库
connection = pymysql.connect(host = 'localhost',user= 'root',password='123456',db='testonecard',port=3306,charset='utf8mb4',cursorclass=pymysql.cursors.DictCursor)
# 通过cursor创建游标
cursor = connection.cursor()
# 创建sql 语句,并执行
sql = "update cert_card_consume SET real_payment_amount =300 where real_payment_amount =200"
cursor.execute(sql)
#提交sql
connection.commit()
注:
无论使用什么的工具或库,都需要连接数据库,
host为数据库的主机IP地址,
port为MySQL的默认端口号,
user为数据的用户名,
password为数据库的登录密码,
db为数据库的名称。
charset:使用的字符集(一般是gb2312)
cursor = db.cursor() 其实就是用来获得python执行Mysql命令的方法,也就是
我们所说的操作游标
cursor()方法创建数据库游标。
execute()方法执行SQL语句。
commit()将数据库的操作真正的提交到数据。
接下来的操作就是数据库的查询了。
fetchone() 用于查询单条数据。
fetchall() 用于查询多条数据。
close() 最后不要忘记了关闭数据连接。
代码如下: #coding = utf-8 import pymysql import os #连接数据库 connection = pymysql.connect(host = 'localhost',user= 'root',password='123456',db='testonecard', port=3306,charset='utf8mb4',cursorclass=pymysql.cursors.DictCursor) # 通过cursor创建游标 cursor = connection.cursor() # 创建sql 语句,并执行 sql = "select consume_seq_no,real_payment_amount from cert_card_consume where card_id = '1292687' " cursor.execute(sql) #查询数据库单条数据 result = cursor.fetchone() print(result) print("-----华丽分割线---------") sql1 ="select consume_seq_no,real_payment_amount from cert_card_consume where card_id = '1292687' " cursor.execute(sql1) #查询数据库多条数据 result1 = cursor.fetchall() for data in result1: print(data) #提交sql connection.commit() #关闭数据连接 connection.close()
难点处理1:通过游标查询出第一条记录的卡号,然后再通过sql查询出该卡号范围的卡号总数
# 通过cursor创建游标 cursor = connection.cursor() sql1 = "select card_no from base_card where apply_status=1 and card_status=1 ORDER BY import_time asc " cursor.execute(sql1) # 查询数据库多条数据 注:查询的结果为字典数据类型集合 result = cursor.fetchone() card_no1 = result.get("card_no") print(card_no1) card_no2 =str(int(card_no1)+100) print(card_no2) #查询出对应的卡号数量 sql2 = "select count(card_no) from base_card where apply_status=1 and card_status=1 and card_no BETWEEN 'card_no1' and 'card_no2'" cursor.execute(sql2) result = cursor.fetchone() num = result.get("count(card_no)") print(num)
注:引用卡号card_no1和card_no2变量时,应该加上引号
难点处理2:同时查询出多条数据时,通过for循环会是一个字典,要是要获取列表中的数据通过执行一下语句:
for data in result1: print(data) test = data.get("card_no") print(test)