Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/355.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.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 事务的Sqlite日期字段错误_Python_Database_Sqlite - Fatal编程技术网

Python 事务的Sqlite日期字段错误

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

试图建立两个数据库,一个是关于房屋的,另一个是关于过去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, 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,你的用户名成功了吗国际象棋中有多少棋步?是的,国际象棋的同伴们,我以西西里岛的防守为我的帐户命名