使用Python在sqlite中插入时转义反斜杠

时间:2017-09-20 17:14:30

标签: python sqlite

我是Python的初学者。我试图使用Python 3.4在sqlite db中插入以下数据。

('config.xml', '09/12/2017 10:33:55 PM', 466, 'C:Users\ron\Downloads\folder');

但我收到错误

SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 23-26: truncated \UXXXXXXXX escape

我认为这是因为这个角色 - \

如何告诉sqlite转义此字符。

代码 -

def create_filedetail(conn, filedetail):
    """
    Create a new file detail into the filedetail table
    :param conn:
    :param filedetail:
    :return: filedetail id
    """
    sql = ''' INSERT INTO filedetail(filename,modified_date,filesize,filepath)
              VALUES(?,?,?,?) '''
    cur = conn.cursor()
    cur.execute(sql, filedetail)
    return cur.lastrowid

def main():
    database = r"C:\Users\ron\Documents\sqlitedb\filedb.db"


sql_create_file_detail_table = """ CREATE TABLE IF NOT EXISTS filedetail (
                                    id integer PRIMARY KEY,
                                    filename text NOT NULL,
                                    modified_date text,
                                    filesize integer,
                                    filepath text
                                ); """
conn = create_connection(database)

    if conn is not None:
        # create filedetail table
        create_table(conn, sql_create_file_detail_table)
        with conn:
            # create a new filedetail
            filedetail = ('config.xml', '09/12/2017 10:33:55 PM', 466, "C:Users\ron\Downloads\folder");
            filedetail_id = create_filedetail(conn, filedetail)

    else:
        print("Error! cannot create the database connection.")

非常感谢任何帮助。提前谢谢。

1 个答案:

答案 0 :(得分:1)

您可以看到此帖中存在类似问题:

What exactly do "u" and "r" string flags do, and what are raw string literals?

基本上,您可以通过在字符串前加 r 来创建字符串文字

看看这个例子。它返回一个无效字符:

>>> mypath = "C:Users\ron\Downloads\folder"
>>> mypath
'C:Users\ron\\Downloads\x0colder'

但是,如果您使用字符串文字:

>>> mypath = r"C:Users\ron\Downloads\folder"
>>> mypath
'C:Users\\ron\\Downloads\\folder'

然后,您可以将此新字符串插入SQL表中。