Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python MySQL将保留换行符_Python_Mysql - Fatal编程技术网

Python MySQL将保留换行符

Python MySQL将保留换行符,python,mysql,Python,Mysql,嗨,我希望能够使用Python在MySQL中存储文本,这样可以保留任何换行符。我使用的是replace('\n',“),它工作得很好,直到我意识到每当文本有撇号时,MySQL都会出错,所以我做了con.escape\u string(text),但现在它消除了替换的影响,所以在发布时我的段落非常混乱 长话短说,我如何实现cgi.escape(以避免HTML),一种在MySQL中存储撇号和其他符号而不出错的方法,以及一种保存换行符的方法。那么 用户可以提交这样一个文本,MySQl可以存储它,然后它

嗨,我希望能够使用Python在MySQL中存储文本,这样可以保留任何换行符。我使用的是
replace('\n',“
,它工作得很好,直到我意识到每当文本有撇号时,MySQL都会出错,所以我做了
con.escape\u string(text)
,但现在它消除了替换的影响,所以在发布时我的段落非常混乱

长话短说,我如何实现cgi.escape(以避免HTML),一种在MySQL中存储撇号和其他符号而不出错的方法,以及一种保存换行符的方法。那么 用户可以提交这样一个文本,MySQl可以存储它,然后它可以打印在一个页面上,就像提交时最初的样子


谢谢大家!

这两个问题完全不同

替换
str.replace('\n','
')
完全是基于html的更改。您可以在将数据存储到数据库之前的任何时间执行此操作,也可以在选择后但在使用该数据呈现html之前执行此操作

其中存储撇号(')是基于sql的问题。您需要将所有撇号(')替换为双撇号(“”),将所有逗号(,)替换为斜杠,后跟逗号(/,),以便将数据正确存储到数据库中

str.replace("'", "''") # replacing apostrophes by double apostrophes
str.replace(",", "\,") # replacing comma by slash-comma

如果返回字符和撇号的存在给您带来了问题,那么很可能是您以错误的方式写入数据库。我怀疑你所做的是:

cursor.execute("INSERT INTO table VALUES('%s')" % value)
作为SQL语句的一部分传递要存储的数据的位置。这通常是错误的做法,尤其是在使用用户提供的数据时,因为这会使您面临安全问题,例如SQL注入攻击。除非非常小心,否则永远不要将用户提供的数据放入SQL语句中

正确的方法是:

cursor.execute("INSERT INTO table VALUES(?)", (value,))

其中,使用问号指示要插入的数据,并将实际数据作为元组的一部分作为第二个参数传入。这大大简化了事情,意味着您可以存储任何需要的数据,而无需转义数据或担心安全问题。

如果您提到存储数据的字段的数据类型,可能会有所帮助。MySQL(以及任何其他RDBMS)中肯定存在能够很好地处理换行的数据类型。此外,我建议不要将HTML存储在数据库中,除非您确定在将数据取出时始终只需要HTML。它将空格存储在数据库中,但当我取回并打印它时,html忽略了换行符,因为它们只是空格而不是
,并造成了混乱。然后,您错误地识别了您的问题。MySQL保留您的换行符,但HTML会折叠它们(正如它应该的那样)。也许你的意思是,“当输出HTML时,我如何将换行符转换为
?”是的,你让我意识到我有多大的缺陷。我只是需要在发布之前用字符串替换。。。在我储存之前没有。我在电脑上呆得太久了!有时,一双额外的眼睛(和一些不太接近问题的人)会有所帮助。我们都去过:)