1.建库
import pymysql
# 建库
try:
conn=pymysql.connect(
host='127.0.0.1',
port=3306,
user='root',
passwd='123456',
)
cur=conn.cursor()
create_database_sql='CREATE DATABASE IF NOT EXISTS py3_tstgr DEFAULT CHARSET utf8 COLLATE utf8_general_ci;'
cur.execute(create_database_sql)
cur.close()
print('创建数据库 py3_tstgr 成功!')
except pymysql.Error as e:
print('pymysql.Error: ',e.args[0],e.args[1])
2.建表
import pymysql
# 建表
try:
conn=pymysql.connect(
host='127.0.0.1',
port=3306,
user='root',
passwd='123456',
db='py3_tstgr',
charset='utf8'
)
cur=conn.cursor()
cur.execute('drop table if exists user;')
create_table_sql='''
CREATE TABLE user(
id int(11) DEFAULT NULL ,
name VARCHAR(50) DEFAULT NULL ,
password VARCHAR(30) DEFAULT NULL ,
birthday TIMESTAMP DEFAULT now()
)engine=innodb DEFAULT CHARACTER set utf8;
'''
cur.execute(create_table_sql)
print('创建数据库表成功!')
except pymysql.Error as e:
print('mysql.Error: ',e.args[0],e.args[1])
3.增、改、删、查数据操作
import pymysql
# 数据库操作
# 连接
def db_conn(host,port,user,passwd,db_name):
try:
conn=pymysql.connect(
host=host,
port=port,
user=user',
passwd=password,
db=db_name,
charset='utf8',
)
# cur=conn.cursor()
print('数据库连接成功!')
# 返回连接
return conn
except pymysql.Error as e:
print('数据库连接失败')
print('mysql.Error: ',e.args[0],e.args[1])
def db_cur(conn):
# 获取游标
cur=conn.cursor()
return cur
def db_close(cur,conn):
# 游标关闭
cur.close()
# 提交事务
conn.commit()
# 连接关闭
conn.close()
# 插入单行数据
def db_insert_data(sql,cur,*args):
try:
# print(args)
result=cur.execute(sql,args)
print('添加语句受影响的行数:',result)
except Exception as e:
print('db_insert_data error: ',e.args)
# 批量插入数据
def db_insert_datas(sql,cur,list_datas):
try:
result=cur.executemany(sql,list_datas)
print('批量插入受影响的行数:',result)
except Exception as e:
print('db_insert_datas error: ',e.args)
# 修改单行数据
def db_update(sql,cur):
result=cur.execute(sql)
print('修改语句受影响的行数:',result)
# 批量修改数据
def db_update_datas(sql,cur,list_datas):
try:
result=cur.executemany(sql,list_datas)
print('批量修改受影响的行数:',result)
except Exception as e:
print('db_update_datas error: ',e.args)
# 删除单行数据
def db_delete_data(sql,cur):
result=cur.execute(sql)
print('删除语句受影响的行数:',result)
# 批量删除数据
def db_delete_datas(sql,cur,list_datas):
try:
result=cur.executemany(sql,list_datas)
print('批量删除受影响的行数:',result)
except Exception as e:
print('db_delete_datas error: ',e.args)
# 回滚
def roll_back(conn):
try:
conn.rollback()
print('回滚完成!')
except Exception as e:
print('rollback error: ',e.args)
def db_select_data(sql,cur):
result=cur.execute(sql)
print('查询语句受影响的行数:',result)
def db_select_datas(sql,cur,list_datas):
try:
result=cur.executemany(sql,list_datas)
print('批量查询受影响的行数:',result)
except Exception as e:
print('db_select_datas error: ',e.args)
if __name__=="__main__":
host='127.0.0.1'
port=3306
user='root'
passwd='123456'
db='py3_tstgr'
conn=db_conn(host,port,user,passwd,db)
print(conn)
cur=db_cur(conn)
print(cur)
insert_sql="insert into user values(1,'tom','123','1990-01-01');"
db_insert_data(insert_sql,cur)
insert_sql2="insert into user values(%s,%s,%s,%s);"
db_insert_data(insert_sql2,cur,2,'lucy','aaa','1991-02-02')
insert_datas_sql="insert into user values(%s,%s,%s,%s);"
list_datas=[(2,'ha2','222','1992-02-02'),(3,'ha3','333','1993-03-03'),(4,'ha4','444','1994-04-04')]
db_insert_datas(insert_datas_sql,cur,list_datas)
# 查询数据
sql="select * from user;"
cur.execute(sql)
res1=cur.fetchone() # 获取一行数据
print(res1)
res2=cur.fetchmany(2) #获取多行数据
print(res2)
res3=cur.fetchall() # 获取所有数据
print(res3)
print(cur.fetchone()) # None
# 重置游标
cur.scroll(1,mode='relative')
print(cur.fetchone())
# 更新数据
up_sql="update user set name='lala' where password='123';"
db_update(up_sql,cur)
# 批量更新数据
up_sqls="update user set name=%s where password=%s;"
up_datas=[('lw','123'),('lc','aaa')]
db_update_datas(up_sqls,cur,up_datas)
# 删除数据
delete_sql="delete from user where name='lw';"
db_delete_data(delete_sql,cur)
delete_sqls="delete from user where name=%s;"
db_delete_datas(delete_sqls,cur,[('lc'),('hah2'),('hah3')])
# print(cur.rownumber) # 0 获取所在行号
# cur.scroll(0,mode='absolute')
# cur.execute('select * from user;')
select_sql="select * from user;"
db_select_data(select_sql,cur)
print(cur.fetchall())
# roll_back(conn) # 回滚
# print(cur.rownumber)
# cur.scroll(0, mode='absolute')
# cur.execute('select * from user;')
# 查询单行
select_sql = "select * from user;"
db_select_data(select_sql, cur)
# 批量查询
select_sqls="select * from user where name=%s;"
db_select_datas(select_sqls,cur,[('ha1'),('ha2'),('ha3')])
print(cur.fetchall())
db_close(cur,conn) # 断开连接
来源:https://www.cnblogs.com/reyinever/p/10869434.html