2012-03-16 133 views
0

的问题特别是,我可以创建使用python在Django的数据库中找到的数据的类型,是模型我有Django的,有BigIntegerField,IntegerField和DecimalField但我不能使同一种使用python的数据,这个想法是让我的Python代码自动更新数据库,这里的代码:创建数据库表

的Django模型

unidad = models.BigIntegerField(max_length=15) 
pin = models.IntegerField(max_length=2) 
fecha = models.DecimalField(max_digits=7,decimal_places=1) 

Python的执行

cursor.execute('''create table u_%(table_name)s stocks (id integer AUTO_INCREMENT NOT NULL PRIMARY KEY,id_unidad bigint NOT NULL, pin integer NOT NULL, fecha numeric(7, 1) NOT NULL)''' % dict(table_name = table_name)) 

这是Django的输出,当我运行“蟒蛇manage.py SQL GPRS”

BEGIN; 
CREATE TABLE `evento` (
    `id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY, 
    `unidad` bigint NOT NULL, 
    `pin` integer NOT NULL, 
    `fecha` numeric(7, 1) NOT NULL 
) 
+0

你是说你想自动更新数据库*架构*?也就是说,如果你添加一个字段到你的模型中,让python代码自动添加数据库中的字段? Django是不是真的内置做到这一点(内置的命令行选项[执行syncdb(https://docs.djangoproject.com/en/dev/ref/django-admin/#syncdb)只会制造新* *表,而不是修改现有的),但你可以看看像[南](http://south.aeracode.org/)。 – Hannele 2012-05-18 17:06:38

+0

这已经解决了,这想要做的是一个Django的数据库和Python代码自动喂养它。谢谢。 – user987055 2012-05-18 17:58:28

回答

0

你的问题是怎么样的混乱。要查看Django使用创建之前执行python manage.py syncdb模型的实际SQL,您可以使用python manage.py sql appname作为记录在这里: https://docs.djangoproject.com/en/dev/ref/django-admin/#sql-appname-appname

+0

我有同样的问题,即使你给我知道Django的是如何创建表的帮助:166,在执行 self.errorhandler(个体经营,EXC,值),第35行,在defaulterrorhandler 提高errorclass,errorvalue _mysql_exceptions.ProgrammingError:(1064) – user987055 2012-03-17 13:45:26

+0

@ user987055 “你的SQL语法的MySQL服务器版本使用附近的股票(ID整数AUTO_INCREMENT NOT NULL PRIMARY KEY,id_unidad BIGINT NOT NULL'位于第1行正确的语法有错误”您的SQL看起来不合法'U _%(表名)■stocks'你想创建一个表称为股票或插入表格的名字吗? – dm03514 2012-03-17 23:25:59