前提:python3.x----三方库—pymysql—pip install pymysql
一、连接数据库
操作数据库的第一步,首先要连接
import pymysql
#打开数据库连接
conn = pymysql.connect('localhost',user = "username",passwd = "password",db = "testdb")
print (conn)
print (type(conn))
二、获取游标
游标是用于操作数据库----可用于增删查改等其他操作
# 代码接上---连接数据库
#获取游标
cursor=conn.cursor()
print(cursor)
注:所有操作的基础是在连接数据库并拿到游标的基础上!
以下代码都是在拿到游标的基础上进行,连接和拿到游标的代码不在给出
三、创建数据库
'''创建数据库'''
def create_database():
#创建pythonBD数据库
sql_create_database = """CREATE DATABASE IF NOT EXISTS pythonDB DEFAULT CHARSET utf8 COLLATE utf8_general_ci""" # sql语句
cursor.execute(sql_create_database)
cursor.close()#先关闭游标
conn.close()#再关闭数据库连接
print('创建pythonBD数据库成功')
四、创建表
def create_table():
#创建user表
cursor.execute('drop table if exists user') # 删除表
sql_create_table = """CREATE TABLE IF NOT EXISTS user(
id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
name varchar(255) NOT NULL,
number int NOT NULL
) """
cursor.execute(sql)
cursor.close()#先关闭游标
conn.close()#再关闭数据库连接
print('创建数据表成功')
五、增----可实现三种插入模式
insert_form:有如下三种
insert:当有与主键相同值插入时,不会插入数据并报错
insert ignore:当有与主键相同值插入时,忽略该条记录不插入但不报错
replace:当有与主键相同值插入时,删除原有记录重新插入新记录值
def insert_data(insert_form, insert_table):
sql_insert = """{} into {}(id,name,number) values(%s,%s,%s)""".format(insert_form, insert_table)
cur.execute(sql_insert % (1,'lewis',44))
conn.commit() # 一定不能忘记commit
cur.close()
conn.close()
print('插入数据成功')
六、删
注:删除权限请谨慎使用,一旦删除,恢复比较麻烦,本人这里仅允许一条一条的删除数据!
def delete_data(delete_table):
sql_selete = """delete from {} where id=%d""".format(delete_table)
cur.execute(sql_selete %(1))
conn.commit() # 一定不能忘记commit
cur.close()
conn.close()
print('删除数据成功')
七、改
注:在外面增加循环,可更改任意字段
def update_data(update_table, **kwargs):
sql_selete = """update {} set {}=%s where name=%s""".format(update_table, key) # key、value为kwargs的key与value
cur.execute(sql_selete %(1, value))
conn.commit() # 一定不能忘记commit
cur.close()
conn.close()
print('更新数据成功')
八、查
注:如果想加限制条件自己添加where语句
def select_data(select_table):
sql_select = """select * from {}""".format(update_table)
cur.execute(sql_selete)
results = cursor.fetchall() # cursor. fetchall():接收全部的返回结果行。fetchone()、fetchmany(size)与fetchall()的区别自行百度
print(results) # 只是查询结果,如有需要自行解析
cur.close()
conn.close()
注:可以添加try语句,增加代码的健壮性—即sql语句可以放在try中。