以下代码运行时没有任何错误,但记录未插入到选项卡中

2024-03-28 13:06:35 发布

您现在位置:Python中文网/ 问答频道 /正文

import pymysql


db_host = "localhost"
db_name = "mydatabse"
table_name = "Student"
db_user = "root"
db_pass = "745269"

query_insert = "INSERT INTO " + table_name + " (stu_id, stu_name) VALUES (%s, %s) "


class Student:
    id = 0
    name = ""

    def __init__(self, sid, name):
        self.id = sid
        self.name = name


def insert_record(rec):
    #print((rec.id, rec.name))
    con = pymysql.connect(host=db_host, user=db_user, password=db_pass, database=db_name)
    cur = con.cursor()
    cur.execute(query_insert, (rec.id, rec.name))
    #$cur.execute("INSERT INTO Student VALUES (%s, %s)", (3, 'Qwerty'))


r1 = Student(3, "Qwerty")
insert_record(r1)

我正在尝试使用pymysql模块向数据库插入新行。我计划像INSERT one一样全局定义所有查询。我想我遗漏了一些查询的格式,但到目前为止还不能指出它。任何帮助都将提前得到感谢


Tags: nameselfidhostdbtablepassquery
1条回答
网友
1楼 · 发布于 2024-03-28 13:06:35

根据https://pymysql.readthedocs.io/en/latest/user/examples.html,“默认情况下,连接不是自动提交的。因此,您必须承诺保存更改。”

这将导致:

import pymysql


db_host = "localhost"
db_name = "mydatabse"
table_name = "Student"
db_user = "root"
db_pass = "745269"

query_insert = "INSERT INTO " + table_name + " (stu_id, stu_name) VALUES (%s, %s) "


class Student:
    id = 0
    name = ""

    def __init__(self, sid, name):
        self.id = sid
        self.name = name


def insert_record(rec):
    #print((rec.id, rec.name))
    con = pymysql.connect(host=db_host, user=db_user, password=db_pass, database=db_name)
    cur = con.cursor()
    cur.execute(query_insert, (rec.id, rec.name))
    #$cur.execute("INSERT INTO Student VALUES (%s, %s)", (3, 'Qwerty'))
    con.commit()  # Added this commit call


r1 = Student(3, "Qwerty")
insert_record(r1)

相关问题 更多 >