我正在尝试在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
来终止脚本有任何帮助吗?
答案 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
(没有大小)并完成它。