2017-02-12 105 views
-1

我是新的Django框架,我试图做一个API的“注册”,我想在执行后插入数据到数据库,但无法这样做。如何在django框架中使用sqlalchemy在mysql数据库中插入数据?

我想创建auth_user的对象,并试图做session.add(auth_user_object) 但它没有给出任何错误,甚至没有添加数据到MySQL数据库。

我能够从数据库中获取(获取)数据。

所有的表格都被创建。

然后我在做inspect db并获取db表类并根据sqlalchemy进行修改。

但我无法使用sqlalchemy将数据添加到数据库表。

请帮帮我。 什么是最好的方法来做到这一点。

我的models.py

from __future__ import unicode_literals 

from django.db import models 

from sqlalchemy import * 
from sqlalchemy import types 
from sqlalchemy import Table, Column, Integer, String, MetaData, ForeignKey 
from sqlalchemy.ext.declarative import declarative_base 
from sqlalchemy.orm import * 


# Create your models here. 
Base = declarative_base() 
class Designation(Base): 
    __tablename__='designation' 
    id = Column(autoincrement=True,primary_key=True) 
    designation_name = Column(String) 
    designation_desc = Column(String) 


class UAuthUser(Base): 
    __tablename__='auth_user' 
    id = Column(autoincrement=True,primary_key=True) 
    password = Column(String) 
    last_login = Column(DateTime) 
    is_superuser = Column(Integer) 
    username = Column(String) 
    first_name = Column(String) 
    last_name = Column(String) 
    email = Column(String) 
    is_staff = Column(Integer) 
    is_active = Column(Integer) 
    date_joined = Column(DateTime) 
    fcm_token = Column(String) 
    designation_id = Column(Integer) 
    ForeignKeyConstraint(['designation'], ['designation.id'] 

我views.py

from rest_framework import status 
from rest_framework.decorators import api_view 
from rest_framework.response import Response 
from django.shortcuts import render 
from designation.models import * 
#from designation.serializers import * 
from sqlalchemy.orm import * 
from sqlalchemy import Column, String, Integer, ForeignKey 
from sqlalchemy.ext.declarative import declarative_base 
from sqlalchemy import * 
from sqlalchemy.orm import sessionmaker 
import sqlalchemy, sqlalchemy.orm 
import urllib 
import urllib2 
import json 
from datetime import datetime 
import collections 
import requests 
from sqlalchemy import create_engine 
import MySQLdb 
import mysql.connector 

def mysqlconnection(db): 
    dialect = 'mysql' 

    username = 'root' 
    password = '' 
    server = 'localhost' 
    port = '3306' 
    database = db 
    url=dialect+'://'+username+':'+password+'@'+server+':'+port+'/'+database 
    try: 
     engine = create_engine(url) 
     Session = sqlalchemy.orm.sessionmaker(bind=engine) 
     session = Session() 
     return session 
    except: 
     return ("Could not establish connection") 

# def mysqlCursor(db): 
# cnx = mysql.connector.connect(database='db') 
# cursor = cnx.cursor(raw=True, buffered=True) 

@api_view(['GET', 'POST']) 
def designation(request): 
    session = mysqlconnection('hrdb') 
    #query = session.query(Designation.id,Designation.designation_name,Designation.designation_desc).all() 
    new_designation=Designation(id=3,designation_name='uday',designation_desc='shankar') 
    session.add(new_designation) 
    session.bulk_save_objects(new_designation) 
    #session.commit() 
    session.close() 
    return Response('query') 


@api_view(['GET', 'POST']) 
def register(request): 
    session = mysqlconnection('hrdb') 
    password1 = "jhg$" 
    last_login1 = "2017-02-08 16:12:52.822000" 
    is_superuser1 = 0 
    username1 = "bibek_n" 
    first_name1 = "bibek" 
    last_name1 = "neupane" 
    email1 = "[email protected]" 
    is_staff1 = 0 
    is_active1 = 1 
    date_joined1 = "2017-02-08 16:12:52.822000" 
    fcm_token1 = "abc" 
    designation_id1 = 1 
    new_user = UAuthUser(password = password1,last_login = last_login1,is_superuser= is_superuser1,username = username1,first_name = first_name1,last_name = last_name1,email = email1,\ 
     is_staff = is_staff1,is_active = is_active1,date_joined= date_joined1,fcm_token = fcm_token1,designation_id = designation_id1) 
    session.add(new_user) 
    #query = session.query(AuthUser).insert() 
    #session.commit() 
    session.close() 
    return Response('query') 
+0

在开始实施之前首先阅读Django文档。你不需要使用SQL炼金术。 –

回答

1

你并不需要使用SQL炼金术在Django。 Django提供ORM来进行数据库查询。你也可以像这样定义模型。

class UAuthUser(models.Model): 
    __tablename__='auth_user' 
    password = models.CharField(max_length=20) 
    last_login = models.DateField() 

请参阅此链接。 https://docs.djangoproject.com/en/1.10/topics/db/models/ https://docs.djangoproject.com/en/1.10/topics/db/queries/

+0

我想了解更多关于sqlalchemy的信息。 –

+0

我检查了他们在哪里建议使用sqlalchemy,但我无法使用它。 –

+0

你为什么在Django中使用sqlalchemy。意思是什么意思 –

0

错误我没有给数据类型的Id这就是为什么错误来了。

相关问题