上次我们用几行代码简单实现了pycharm远程连接数据库,并且操作查询,但是这仅仅是在数据库已经存在并且已经有表的前提下,来获取数据,更多的时候需要我们自己创建数据库,创建一张表来写入我们需要保存的数据,于是,接下来的代码块就足以实现功能,并且我把它封装成类,以方便自己调用
代码块
# 导入库
import math
import pymysql
import random
# 这里定义一个类
class Dbapi(object):
def __init__(self):
# 2,与数据库建立链接
self.db_conf = {
'host': '192.168.61.129', # 主机ip
'port': 3306, # mysql 默认的端口
'user': 'admin', # 用户名
'password': 'Root110qwe', # 密码
'db': 'student', # 数据库名
'charset': 'utf8' # 编码方式,注意,这里不是 utf-8
}
# 3,创建游标对象
self.conn = pymysql.connect(**self.db_conf)
self.cursor = self.conn.cursor()
# 定义创建表方法
def create_table(self):
try:
# 先判断是否存在这张表,存在就删除并且新建
self.cursor.execute('drop tables if exists student')
self.cursor.execute("create table student(id int PRIMARY KEY,name varchar(20),age int)")
print('创建表成功')
except Exception as e:
print(e)
print('创建表失败')
# 定义插入数据方法
def insert_data(self):
sql = 'insert into student (id,name,age) VALUES '
#name = ['杨奎','刘宏','何果','杨乾','梁京斌','陶发强']
for i in range(6):
#var1 = print(name[i])
#temp = f'({i+1},{name[i]},{random.randint(18,30)}),'
temp = '(%s,"NanFeng%s",%s),'%(i+1,i+1,random.randint(18,30))
sql += temp
sql = sql[:-1] # 这里的sql进行处理上面temp末尾的逗号 ‘,’
try:
self.cursor.execute(sql)
self.conn.commit()
print('数据写入成功')
except Exception as e:
self.conn.rollback()
print(e)
print('数据写入失败')
#定义查询数据方法
def select(self):
try: # 下面的语句和我的上一篇完全一致
sql = 'select * from student'
rv = self.cursor.execute(sql)
resp = self.cursor.fetchall()
[print(var2) for var2 in resp]
except Exception as e:
self.conn.rollback()
print(e)
finally:
self.conn.commit()
self.cursor.close()
self.cursor.close()
# 类实例化
db = Dbapi()
# 定义一个主函数
def main():
db.create_table()
db.insert_data()
db.select()
if __name__ == '__main__':
# 调用函数,执行功能
main()
输出结果
创建表成功
数据写入成功
(1, 'NanFeng1', 21)
(2, 'NanFeng2', 25)
(3, 'NanFeng3', 21)
(4, 'NanFeng4', 24)
(5, 'NanFeng5', 20)
(6, 'NanFeng6', 25)
接下来还是一样进入数据库里面看看数据是否相同
显示所有的表
查看表结构
查询数据