Python 事务的Sqlite日期字段错误
试图建立两个数据库,一个是关于房屋的,另一个是关于过去16年房屋销售日期和价格的Python 事务的Sqlite日期字段错误,python,database,sqlite,Python,Database,Sqlite,试图建立两个数据库,一个是关于房屋的,另一个是关于过去16年房屋销售日期和价格的 conn = sqlite3.connect('houses_in_london.db') database = conn.cursor() database.execute('CREATE TABLE houses (id INTEGER PRIMARY KEY, address TEXT,' ' area TEXT NOT NULL, postcode TEXT, bedroo
conn = sqlite3.connect('houses_in_london.db')
database = conn.cursor()
database.execute('CREATE TABLE houses (id INTEGER PRIMARY KEY, address TEXT,'
' area TEXT NOT NULL, postcode TEXT, bedrooms TEXT)')
database.execute('CREATE TABLE transactions (transaction_id INTEGER, house_id INTEGER, '
'FOREIGN KEY(house_id) REFERENCES houses(id), date TEXT, sale_price INTEGER )')
database.commit()
database.close()
如果你们注意到了,我正试图在transactions表中放置一个日期字段来标记每次销售,并将其作为文本字段,但它返回
Traceback (most recent call last):
File "/Users/saminahbab/Documents/House_Prices/final_spider.py", line 14, in <module>
database.execute('CREATE TABLE transactions (transaction_id INTEGER, house_id INTEGER, '
sqlite3.OperationalError: near "DATE": syntax error
回溯(最近一次呼叫最后一次):
文件“/Users/saminahbab/Documents/House_Prices/final_spider.py”,第14行,在
execute('CREATE TABLE transactions(transaction\u id INTEGER,house\u id INTEGER,'
sqlite3.0错误:接近“日期”:语法错误
这对我来说毫无意义,因为我只是想创建一个文本日期字段,应该可以通过,我可以用pandas进行分析,pandas可以在该字段中读取数据并将其转换为日期对象。
有人能帮我创建日期字段吗?这个更简洁的语法没有必要
database.execute(
'CREATE TABLE transactions (transaction_id INTEGER, house_id INTEGER '
'REFERENCES houses(id), date TEXT, sale_price INTEGER )')
或者,您需要将约束移动到create语句的末尾
database.execute(
'CREATE TABLE transactions (transaction_id INTEGER, house_id INTEGER, '
'date TEXT, sale_price INTEGER,
'FOREIGN KEY(house_id) REFERENCES houses(id) )')
从文档中:
CREATETABLE包含一个或多个列定义,可以选择后跟表约束列表
这在语法上是一个表约束,必须遵循所有列定义:
FOREIGN KEY(house_id) REFERENCES houses(id)
house_id INTEGER REFERENCES houses(id)
这是一个列定义,可以位于其他列定义之间:
FOREIGN KEY(house_id) REFERENCES houses(id)
house_id INTEGER REFERENCES houses(id)
我不确定您是否可以混合外键和列定义。我只想将外键定义移到列表的末尾。嘿,伙计,这就解决了。谢谢,但我不明白为什么,这里的主要区别是外键被取出了,但即使有外键,它肯定还是有意义的。谢谢你e4c5,你的用户名成功了吗国际象棋中有多少棋步?是的,国际象棋的同伴们,我以西西里岛的防守为我的帐户命名