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()

image

加上异常处理的小改进
在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()

image

正常写法

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等软件查看数据库情况
image

看见已经创建成功了

我们再来执行一条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()


image
可以看见执行成功了

3.pymysql 执行DML语句

DML (Data Manipulation Language):​​ 操作表中的数据行​ (INSERT, UPDATE, DELETE)。处理实际数据内容。

提前写入几个数据
image

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()


image

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()

image

  • 打印插入的主键id
print("主键id=",con.insert_id())

此外的update和delete也是一样的,没区别,只要学过sql语句就可以套

posted @ 2025-07-17 09:22  屈臣  阅读(19)  评论(0)    收藏  举报