使用Django游标保存转义字符时出错

2024-05-20 02:03:33 发布

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

我有一个url,我想用django提供的“cursor”工具保存到MySQL数据库中,但是我一直收到“格式字符串参数不足”错误,因为这个url包含一些转义字符(非ascii字符)。测试代码相当简短:

在测试.py在

import os 
import runconfig #configuration file 
os.environ['DJANGO_SETTINGS_MODULE'] = runconfig.django_settings_module 
from django.db import connection,transaction 
c = connection.cursor() 
url = "http://www.academicjournals.org/ijps/PDF/pdf2011/18mar/G%C3%B3mez-Berb%C3%ADs et al.pdf"

dbquery = "INSERT INTO main_crawl_document SET url="+url 
c.execute(dbquery) 
transaction.commit_unless_managed()

完整的错误消息是

^{pr2}$

有人能帮我吗?在


Tags: 工具django字符串import数据库urlos格式
1条回答
网友
1楼 · 发布于 2024-05-20 02:03:33

您正在为可能的SQL注入打开自己的大门。相反,请正确使用c.execute():

url = "http://www.academicjournals.org/ijps/PDF/pdf2011/18mar/G%C3%B3mez-Berb%C3%ADs et al.pdf"
dbquery = "INSERT INTO main_crawl_document SET url=?" 
c.execute(dbquery, (url,)) 
transaction.commit_unless_managed()

.execute方法应该接受一个iterable参数,以用于转义,假设它是普通的dbapi方法(Django应该使用它)。在

相关问题 更多 >