话不多说直接上代码,此代码已经模块化,可以直接放在工程中进行调用,有4个方法select,insert,update,delete使用方法的__doc__属性可以获取到参数传递格式的帮助,不想复制的可以直接下载
文件连接://download.youkuaiyun.com/download/qq_26227841/12152664
import pymysql
# 连接的主机地址也可是localhost
HOST = "localhost"
# 数据库用户
USERNAME ="root"
# 密码
PASSWORD ="123456"
# 连接数据库的名字
DB_NAME ="python"
# mysql默认端口是3306,也可以用其他端口
PORT = 3306
# 使用的编码
CHARSET = "utf8"
def select(table_name):
'''
参数格式:
table_name:"string"
例:
select("class")
sql语句:
select * form table_name
函数语法:
返回一条数据:
cursor.excute(sql)
cursor.fetchone()
返回多条数据:
cursor.excute(sql)
cursor.fetchall()
'''
#连接数据库
try:
conn = pymysql.connect(
host=HOST, # 连接的主机地址也可是localhost
user=USERNAME, # 用户名,如果没有创建gust,用户就用root用户,我这里避免用高级权限新键用户
passwd=PASSWORD, # 密码
db=DB_NAME, # 连接数据库的名字
port=PORT, # mysql默认端口是3306,也可以用其他端口
charset=CHARSET,
)
except pymysql.Error as e:
print("连接失败:%s" % e)
# 获取操作游标
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
# 使用参数合成sql语句
sql = "select * from " + table_name
# 执行查找语法
try:
cursor.execute(sql)
except pymysql.Error as e:
# 打印错误信息
print("发生错误:%s" % e)
# 返回多条数据
class_list = cursor.fetchall()
#关闭游标
cursor.close()
#关闭连接
conn.close()
#返回查询结果,以便其他操作
return class_list
def insert(table_name,key_list,values):
"""
参数格式
table_name:"string"
key_list:["id","name",...] 键的列表
values:[(value1,value2,...)] 列表内的元组
例:
select("class",["id","name"],[(3,"三班")])
函数语法
sql语句:sql="insert into table_name(key1,key2) values(%s,%s)" %s占位
插入单条数据语法:
cursor.execute(sql,("小明","男"))
插入多条数据语法:
info=[("小楠","女"),("小贝","女"),("小东","男")]
cursor.executemany(sql,info)
"""
# 把所有key合并成字符串并用","号隔开
keys = ",".join(key_list)
# 根据key的个数生成占位符
tmp_list = []
for n in key_list:
tmp_list.append("%s")
placeholder = ",".join(tmp_list)
# 链接数据库
try:
conn = pymysql.connect(
host=HOST, # 连接的主机地址也可是localhost
user=USERNAME, # 用户名,如果没有创建gust,用户就用root用户,我这里避免用高级权限新键用户
passwd=PASSWORD, # 密码
db=DB_NAME, # 连接数据库的名字
port=PORT, # mysql默认端口是3306,也可以用其他端口
charset=CHARSET,
)
except pymysql.Error as e:
print("连接失败:%s"%e)
#使用cursor获取操作游标
cursor=conn.cursor(cursor=pymysql.cursors.DictCursor)
# 使用参数合成数据库插入语句
sql="insert into " + table_name + "(" + keys + ") " + "values("+placeholder+")"
# 插入多条数据,即执行多遍sql语句
try:
cursor.executemany(sql,values)
except pymysql.Error as e:
# 发生错误时回滚
conn.rollback()
# 打印错误信息
print("发生错误:%s" % e)
# 关闭游标
cursor.close()
#把数据提交到数据库,关闭数据库
conn.commit()
conn.close()
# 返回操作状态
return True
def update(table_name,key_list,sole_key,values):
'''
参数格式
table_name:"string"
key_list:["key1","key2",..] 列表
sole_key:"key=value"
values:("1", "张三",...) 元组
例:
update("class",["id","name"],"id=3",(3,"三班"))
sql语句:
update table_name set key1=%s,key2=%s where id=4(主键)
'''
# 把用户输入的key列表,组成key=%s,key=%s的字符串
tmp_list = []
for n in key_list:
tmp_list.append(n+"=%s")
keys = ",".join(tmp_list)
#连接数据库
try:
conn = pymysql.connect(
host=HOST, # 连接的主机地址也可是localhost
user=USERNAME, # 用户名,如果没有创建gust,用户就用root用户,我这里避免用高级权限新键用户
passwd=PASSWORD, # 密码
db=DB_NAME, # 连接数据库的名字
port=PORT, # mysql默认端口是3306,也可以用其他端口
charset=CHARSET,
)
except pymysql.Error as e:
print("连接失败:%s" % e)
# 获取操作游标
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
# 根据参数合成sql语句
sql = "update " + table_name+ " set " + keys + " where " + sole_key
# 执行sql语句
try:
cursor.execute(sql, values)
except pymysql.Error as e:
# 发生错误时回滚
conn.rollback()
# 打印错误信息
print("发生错误:%s" % e)
# 关闭游标
cursor.close()
# 同步到数据库,关闭连接
conn.commit()
conn.close()
# 返回操作状态
return True
def delete(table_name,key):
"""
参数格式
table_name:"string"
key:"key=value"
例:
delete("class","id=3")
sql语句:
delete from table_name where id=4(主键)
"""
#连接数据库
try:
conn = pymysql.connect(
host=HOST, # 连接的主机地址也可是localhost
user=USERNAME, # 用户名,如果没有创建gust,用户就用root用户,我这里避免用高级权限新键用户
passwd=PASSWORD, # 密码
db=DB_NAME, # 连接数据库的名字
port=PORT, # mysql默认端口是3306,也可以用其他端口
charset=CHARSET,
)
except pymysql.Error as e:
print("连接失败:%s" % e)
# 获取操作游标
cursor = conn.cursor()
# 根据参数合成sql语句
sql = "delete from "+ table_name + " where " + key
# 执行sql语句
try:
cursor.execute(sql)
except pymysql.Error as e:
# 发生错误时回滚
conn.rollback()
# 打印错误信息
print("发生错误:%s" % e)
# 关闭游标
cursor.close()
# 同步到数据库,并关闭连接
conn.commit()
conn.close()
# 返回操作状态
return True