python中的sqlite3简单查询挂起

时间:2014-01-14 18:57:47

标签: python sqlite

我正在尝试在python和sqlite3中进行简单的查询:

#!/usr/bin/env python
# -*- coding: utf-8; -*-

import sqlite3

db = sqlite3.connect('test.db')
query = """CREATE TABLE `home` (
   `id` int(11) not null auto_increment,
   `full_name` char(255) not null,
   `display_name` char(255),
   `ip_address` char(255) not null,
   `user`  char(255) not null,
   PRIMARY KEY (`id`)
);"""
db.execute(query)
db.commit()
db.close()

但是当我运行脚本时,没有任何反应;我的意思是:在目录中创建一个名为test.db的文件,但之后shell保留在那里而不返回任何内容(甚至提示),我需要使用kill -9

来终止脚本

有任何帮助吗?

1 个答案:

答案 0 :(得分:2)

我不知道为什么你的脚本显然会挂起,但你的查询中有SQL语法错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
sqlite3.OperationalError: near "auto_increment": syntax error

SQLite只有一个AUTOINCREMENT关键字,只有在PRIMARY KEY constraint之后才支持;您必须将PRIMARY KEY行从底部移至id列。您还必须使用正确的INTEGER类型,而不是int

SQLite也会忽略列大小,你也可以删除它们。

以下查询有效:

query = """CREATE TABLE `home` (
   `id` integer primary key autoincrement,
   `full_name` char(255) not null,
   `display_name` char(255),
   `ip_address` char(255) not null,
   `user`  char(255) not null
);"""

我在char列的列大小中留下了,但你也可以制作那些TEXT(没有大小)并完成它。