[英]Unable to append dataframe into sqlite3
我正在尝试将数据框插入sqlite。 我现有的数据框如下:
---------------------------------------
|date |location|location_code|
---------------------------------------
0 |12/14/2016 | FL | 2
1 |12/15/2016 | NY | 3
我的python 3代码:
import sqlite3
conn = sqlite3.connect('transaction.sqlite')
cur = conn.cursor()
cur.executescript('''
DROP TABLE IF EXISTS New;
CREATE TABLE New (
index INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,
date TEXT,
location TEXT,
location_code INTEGER)
''')
df.to_sql("Records", conn, if_exists="append")
conn.commit()
conn.close()
运行代码时,出现以下错误:
Traceback (most recent call last):
File "C:/dbtest.py", line 15, in <module>
''')
sqlite3.OperationalError: near "index": syntax error
我知道当我将单词索引更改为另一个单词时,它可以工作。
但是,我没有在sqlite的数据库浏览器中创建名为index的字段的问题。
如您所见, index
是一个保留字,您不能将其用作列名,至少不能原样使用-您必须使用双引号( "
)对其进行转义:
cur.executescript('''
DROP TABLE IF EXISTS New;
CREATE TABLE New (
"index" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,
date TEXT,
location TEXT,
location_code INTEGER)
''')
数据库浏览器可能会自动转义名称,从而允许您通过保留字来调用在其中创建的列。
index
是保留关键字 。 您需要引用它才能使其成为标识符:
CREATE TABLE New (
"index" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,
date TEXT,
location TEXT,
location_code INTEGER)
从关键字文档中:
如果要使用关键字作为名称,则需要用引号引起来。 SQLite中有四种引用关键字的方式:
'keyword'
单引号中的关键字是字符串文字。
"keyword"
双引号中的关键字是标识符。
[keyword]
用方括号括起来的关键字是一个标识符。 这不是标准的SQL。 此引用机制由MS Access和SQL Server使用,并且包含在SQLite中以实现兼容性。
`keyword`
带有重音符号(ASCII代码96)的关键字是一个标识符。 这不是标准的SQL。 这种引用机制由MySQL使用,并包含在SQLite中以实现兼容性。
GUI客户端在生成SQL创建表时通常会为您引用标识符。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.