pyhton操作数据库无法往表中插入数据

import pymssql

# 打开数据库连接
db = pymssql.connect(host='root',
                     user='len',
                     password='12345',
                     database='Python_database',
                     charset='cp936')
# 使用cursor()方法创建一个游标对象cursor
cursor = db.cursor()

try:
    # 执行SQL语句
    cursor.execute('INSERT INTO books VALUES(2101, "零基础学Py", "Python", 79.82, "2021-10-9")')
    # 提交数据
    db.commit()
    cursor.execute("select * from books")
    result = cursor.fetchall()
    print(result)
except:
    # 发生错误时回滚
    print(5)
    db.rollback()
# 关闭数据库连接
db.close()

这是表的列名

    id int NOT NULL,
    name varchar(30) NOT NULL,
    category varchar(30) NOT NULL,
    price float NOT NULL,
    publish_time date NOT NULL,
    PRIMARY KEY (id)

数据库连接正确,但数据就是一直插入不进去,求解!

b"Invalid column name '\xc1\xe3\xbb\xf9\xb4\xa1\xd1\xa7Py'

这句翻译就是 ,无效的字段名 "零基础学py"。

在SQL里,双引号中间的代表字段名、表名等,单引号中间的代表字符串。
所以,你得把插入的这几个值的双引号改成单引号。

改成这样, 看看输出了啥


import pymssql
 
# 打开数据库连接
db = pymssql.connect(host='root',
                     user='len',
                     password='12345',
                     database='Python_database',
                     charset='cp936')
# 使用cursor()方法创建一个游标对象cursor
cursor = db.cursor()
 Ex
try:
    # 执行SQL语句
    ret_int = cursor.execute('INSERT INTO books(id,name,category,pirce,publish_time) VALUES(2101, "Test Python", "Python", 79.82, "2021-10-09")')
    # 提交数据
    db.commit()
    print("insert ok ",ret_int)
    cursor.execute("select * from books")
    result = cursor.fetchall()
    print(result)
except Exception as e :
   print("error",repr(e))
    # 发生错误时回滚
    print(5)
    db.rollback()
# 关闭数据库连接
db.close()

去掉 try...exception以后有这样的报错。
pymssql._pymssql.ProgrammingError: (207, b"Invalid column name '\xc1\xe3\xbb\xf9\xb4\xa1\xd1\xa7Py'.DB-Lib error message 20018, severity 16:\nGeneral SQL Server error: Check messages from the SQL Server\nDB-Lib error message 20018, severity 16:\nGeneral SQL Server error: Check messages from the SQL Server\nDB-Lib error message 20018, severity 16:\nGeneral SQL Server error: Check messages from the SQL Server\n")

host不是root,而是你数据库的主机地址

img