gpt4 book ai didi

python - 创建新数据库时如何将参数传递给execute()

转载 作者:行者123 更新时间:2023-11-29 19:29:35 27 4
gpt4 key购买 nike

我现在正在学习通过 python 使用 MySQL。

当我尝试创建这样的新数据库时:

sql = 'CREATE DATABASE IF NOT EXISTS %s'
cursor.execute(sql, (self.DB_NAME,))

DB_NAME 是一个字符串,在本例中为

self.DB_NAME = 'bmagym'  

我收到此错误:

MySQL Error [1064]: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''bmagym'' at line 1

但是如果我将代码替换为:

sql = 'CREATE DATABASE IF NOT EXISTS %s' %self.DB_NAME
cursor.execute(sql)

它按预期工作。

我的问题是如何将参数传递给execute()而不是使用%?

最佳答案

SQL语法中的数据库名称的写法如下

`dbname`

SQL 也接受普通的dbname

CREATE DATABASE IF NOT EXISTS dbname
# works like
CREATE DATABASE IF NOT EXISTS `dbname`
# BUT: only if dbname is not a SQL keyword.

cursor.execute()函数会自动格式化和转义字符串(防止SQL注入(inject))。所以执行这个查询:

CREATE DATABASE IF NOT EXISTS 'dbname'

这是一个语法错误。 Here is a similar topic on this question.你的第二种方法很好,只需用 python % 运算符替换数据库名称即可。

sql = 'CREATE DATABASE IF NOT EXISTS `%s`' %self.DB_NAME

关于python - 创建新数据库时如何将参数传递给execute(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41893681/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com