记录---python的pymysql库及本地mysql使用


首先,下载pymysql库

pip install pymysql

py文件引用:

import pymysql

class DB:

def __init__(self):
"""连接数据库,创建游标"""
self.con = pymysql.connect(host='localhost', port=3306, user='root',
password="mysql", database='test', charset='utf8',
cursorclass=pymysql.cursors.DictCursor
)
self.cur = self.con.cursor()

def query_sql(self, sql):
"""执行查询的sql"""
self.cur.execute(sql)
return self.cur.fetchall()

def excute_sql(self, sql):
"""执行增删改的sql"""
self.cur.execute(sql)
self.con.commit()

def close(self):
"""关闭游标、断开连接"""
self.cur.close()
self.con.close()

此外,说一下这次数据库相关内容碰到的坑

在安装好mysql客户端后(mysql5.7,网上有下载教程)

首先建库:

create database testdb;

然后建表

create table books(
id int unsigned primary key auto_increment not null,
name varchar(20) default '',
position varchar(40) default '',
status enum('在库','出借') default '在库',
borrorwer varchar(20) default ''
);

这时候报了一个错误:ERROR 1067 (42000):Invalid default value for 'status'(“状态”的默认值无效)

多方查验后发现,这是由于建库的时候没有定义编码格式,数据库无法识别中文的默认内容导致的,更改数据库的编码属性即可解决这个问题;

我这里直接进行了删库操作,重新建了一个新的库,命令语句:

CREATE DATABASE IF NOT EXISTS test_db_ DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

至此,错误解决,再次执行建表语句没有再报错。

相关