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,而是你数据库的主机地址