2017-02-12 109 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這就是爲什麼錯誤來了。

相關問題