Вставить дважды - в базу данных SQLite - PullRequest
1 голос
/ 28 декабря 2010

У меня есть текст, который мне нужно поместить в базу данных sqlite.Я не знаю, как заставить sqlite принять двойной минус в тексте, потому что sqlite рассматривает его как комментарий.

Как я могу это сделать?

Ответы [ 2 ]

2 голосов
/ 29 декабря 2010

Вы не должны помещать текст непосредственно в операторы SQL INSERT; это вызывает проблемы , если вы не будете осторожны.

Предпочтительным подходом является использование параметризованных запросов. Таким образом, вам не нужно иметь дело с экранированием строк.

В C API используйте семейство функций sqlite3_bind _ *.

В модуле Python sqlite3 передать параметры в качестве отдельного аргумента execute.

>>> import sqlite3
>>> db = sqlite3.connect(':memory:')
>>> db.execute("CREATE TABLE Table1 (A TEXT, B TEXT)")
<sqlite3.Cursor object at 0xe2fa80>
>>> dbl_minus = 'Text -- with -- double minus'
>>> multiline = 'Text\nwith\nline\nbreaks'
>>> db.execute("INSERT INTO Table1 VALUES (?, ?)", (dbl_minus, multiline))
<sqlite3.Cursor object at 0xe2fb30>
>>> db.execute("SELECT * FROM Table1").fetchall()
[('Text -- with -- double minus', 'Text\nwith\nline\nbreaks')]
2 голосов
/ 28 декабря 2010

Вы уверены, что ставите строку в кавычки?Например:

insert into table1 ('Text -- with -- double minus')

РЕДАКТИРОВАТЬ:

Для многострочной строки попробуйте что-то вроде:

insert into table1 ('Text' + char(13) + char(10) + '-- with double minus')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...