如何使用python执行数据库插入?

kuhbmx9i  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(258)

在数据库表中插入数据时遇到问题。我用的是python和mariadb。连接到数据库是开放和测试,我可以查询数据库,但我不能钉插入语法。我找到了两种方法,但都不管用。

insert = (
    "INSERT INTO ksiazka (ISBN, tytul, autor, rok_wydania, ilosc stron)"
    "VALUES (%s,%s,%s,%s,%s)"
)
dane = (ISBN, tytul, autor, rok_wydania, ilosc_stron)
cursor.execute(insert, dane)

或者这样:

cursor.execute("INSERT INTO ksiazka (ISBN, tytul, autor, rok_wydania, ilosc stron) VALUES (%s,%s,%s,%s,%s)", (ISBN, tytul, autor, rok_wydania, ilosc_stron))

执行时出现以下错误:
traceback(最近一次调用last):文件“c:\users\jakub\appdata\local\programs\python36\lib\site packages\mysql\connector\connection\cext.py”,第377行,在cmd\u query raw\u as\u string=raw\u as\u string)\u mysql\u connector.mysqlinterfaceerror:您的sql语法有错误;请查看与您的mariadb服务器版本对应的手册,以了解在第1行使用“stron”值('12345678','wertvfdg','3','1243','213')附近的正确语法
在处理上述异常时,发生了另一个异常:
traceback(最近一次调用last):文件“c:/users/jakub/pycharmprojects/biblioteka/sql\u connector.py”,第57行,在cursor.execute(insert,dane)文件“c:\users\jakub\appdata\local\programs\python\python36\lib\site packages\mysql\connector\cursor\u cext.py”,第264行,在执行原始\u as \u string=self.\u raw \u as \u string)文件“c:\users\jakub\appdata\local\programs\python36\lib\site packages\mysql\connector\connection \u cext.py”的第380行,在cmd \u query sqlstate=exc.sqlstate)mysql.connector.errors.programmingerror:1064(42000):您的sql语法有错误;请查看与您的mariadb服务器版本对应的手册,以了解在第1行使用“stron”值('12345678','wertvfdg','3','1243','213')附近的正确语法

4nkexdtk

4nkexdtk1#

如果列名中有空格,则需要进行特殊处理,必须对其进行转义:

INSERT INTO ksiazka (ISBN, tytul, autor, rok_wydania, `ilosc stron`) ...

这就是为什么列名中的空格很烦人,应该避免。

相关问题