【发布时间】:2011-10-24 03:25:21
【问题描述】:
我不明白为什么它不起作用。我已经创建了几个数据库和表,显然没有问题。但是我被这个从 django 数据模型创建的表卡住了。为了澄清我所做的,从 mysql 控制台创建了新的数据库和表,并尝试从 python 插入并工作。但是,这对我来说很奇怪。
class Experiment(models.Model):
user = models.CharField(max_length=25)
filetype = models.CharField(max_length=10)
createddate= models.DateField()
uploaddate = models.DateField()
time = models.CharField(max_length=20)
size = models.CharField(max_length=20)
located= models.CharField(max_length=50)
这是 mysql 控制台中的视图
mysql> describe pmass_experiment;
+-------------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| user | varchar(25) | NO | | NULL | |
| filetype | varchar(10) | NO | | NULL | |
| createddate | date | NO | | NULL | |
| uploaddate | date | NO | | NULL | |
| time | varchar(20) | NO | | NULL | |
| size | varchar(20) | NO | | NULL | |
| located | varchar(50) | NO | | NULL | |
+-------------+-------------+------+-----+---------+----------------+
8 rows in set (0.01 sec)
上面的pmass_experiment表是django ORM在python manage.py syncdb
之后创建的现在我正在尝试通过 python MySQLdb 将数据插入 pmass_experiment
import MySQLdb
import datetime,time
import sys
conn = MySQLdb.connect(
host="localhost",
user="root",
passwd="root",
db="experiment")
cursor = conn.cursor()
user='tchand'
ftype='mzml'
size='10MB'
located='c:\'
date= datetime.date.today()
time = str(datetime.datetime.now())[10:19]
#Insert into database
sql = """INSERT INTO pmass_experiment (user,filetype,createddate,uploaddate,time,size,located)
VALUES (user, ftype, date, date, time, size, located)"""
try:
# Execute the SQL command
cursor.execute(sql)
# Commit your changes in the database
conn.commit()
except:
# Rollback in case there is any error
conn.rollback()
# disconnect from server
conn.close()
但是,不幸的是,没有插入任何内容。我猜这可能是由于表中的primary_key(id)没有自动增加。
mysql> select * from pmass_experiment;
Empty set (0.00 sec)
你能简单地指出我的错误吗?
谢谢
【问题讨论】:
-
您正在捕获所有异常,因此看不出有什么问题。
raise再次出现异常,或者至少打印它的回溯。 -
除非那里有一些非常智能的字符串插值,否则您的查询将 字面上 像
insert into blah (user) values (user)这样到达数据库,这是无效的。 -
不应该对 c:\ 进行双重转义吗? 'c:\\' 这可能是问题所在?
-
@Serdalis- 是的,应该是这样的。在这里粘贴时我更改了它。