pymysql入门
1.pymysql创建数据库连接
基础版
from pymysql import Connection
# 创建数据库连接
con = Connection(
host='localhost',# 主机名
port=3306, # 端口
user='root', # 账户
password='123456', # 密码
)
print(type(con))
print(con.get_host_info())
print(con.get_server_info())
#关闭连接
con.close()

加上异常处理的小改进
在user那里添加了个错误,看看效果
from pymysql import Connection
con = None
try:
# 创建数据库连接
con = Connection(
host='localhost',
port=3306,
user='root2',
password='200647',
)
print(type(con))
print(con.get_host_info())
print(con.get_server_info())
except Exception as e:
print("异常:",e)
finally:
if con:
#关闭连接
con.close()

正常写法
from pymysql import Connection
con = None
try:
# 创建数据库连接
con = Connection(
host='localhost',
port=3306,
user='root',
password='200647',
)
print(type(con))
print(con.get_host_info())
print(con.get_server_info())
except Exception as e:
print("异常:",e)
finally:
if con:
#关闭连接
con.close()
2.pymysql执行DDL语句
DDL (Data Definition Language): 操作数据库结构/模式 (CREATE, ALTER, DROP, TRUNCATE, RENAME)。处理对象定义。
在此之前,我们提前新建一个名为db_python的数据库,后面要用
from pymysql import Connection
con = None
try:
# 创建数据库连接
con = Connection(
host='localhost',
port=3306,
user='root',
password='200647',
)
# 创建游标对象
cursor = con.cursor()
# 定义一个建表sql语句:
sql = """
CREATE TABLE `t_student`(
`id` INT NOT NULL AUTO_INCREMENT,
`name` VARCHAR(20) NOT NULL,
`age` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
"""
# 选择要操作的数据库
con.select_db('db_python')
# 使用游标对象,执行sql
cursor.execute(sql)
cursor.close()
except Exception as e:
print("异常:",e)
finally:
if con:
#关闭连接
con.close()
执行之后在Navicat等软件查看数据库情况

看见已经创建成功了
我们再来执行一条sql语句
from pymysql import Connection
con = None
try:
# 创建数据库连接
con = Connection(
host='localhost',
port=3306,
user='root',
password='200647',
database='db_python',#指定操作数据库
)
# 创建游标对象
cursor = con.cursor()
# 定义一个建表sql语句:
sql = """
ALTER TABLE t_student ADD COLUMN sex varchar(1)
"""
# 使用游标对象,执行sql
cursor.execute(sql)
cursor.close()
except Exception as e:
print("异常:",e)
finally:
if con:
#关闭连接
con.close()

可以看见执行成功了
3.pymysql 执行DML语句
DML (Data Manipulation Language): 操作表中的数据行 (INSERT, UPDATE, DELETE)。处理实际数据内容。
提前写入几个数据

from pymysql import Connection
con = None
try:
# 创建数据库连接
con = Connection(
host='localhost',
port=3306,
user='root',
password='200647',
database='db_python',#指定操作数据库
)
# 创建游标对象
cursor = con.cursor()
# 使用游标对象,执行sql
cursor.execute("select * from t_student")
# 获取查询结果
result = cursor.fetchall()
print(type(result),result)
for row in result:
print(row)
cursor.close()
except Exception as e:
print("异常:",e)
finally:
if con:
#关闭连接
con.close()

4.pymysql 执行 insert 操作
from pymysql import Connection
con = None
try:
# 创建数据库连接
con = Connection(
host='localhost',
port=3306,
user='root',
password='200647',
database='db_python',#指定操作数据库
)
# 创建游标对象
cursor = con.cursor()
# 使用游标对象,执行sql
cursor.execute("insert into t_student values (3,'王五',28,'M') ")
# 确认提交
con.commit()
cursor.close()
except Exception as e:
print("异常:",e)
finally:
if con:
#关闭连接
con.close()
- 插入王五这一数据
我们可以设置auto_commit=True来自动提交
from pymysql import Connection
con = None
try:
# 创建数据库连接
con = Connection(
host='localhost',
port=3306,
user='root',
password='200647',
database='db_python',#指定操作数据库
autocommit=True
)
# 创建游标对象
cursor = con.cursor()
# 使用游标对象,执行sql
cursor.execute("insert into t_student values (4,'赵六',99,'F') ")
cursor.close()
except Exception as e:
print("异常:",e)
finally:
if con:
#关闭连接
con.close()

- 打印插入的主键id
print("主键id=",con.insert_id())
此外的update和delete也是一样的,没区别,只要学过sql语句就可以套

浙公网安备 33010602011771号