2017-02-12 9 views
-1

私はdjangoフレームワークの新人です。私は実行後にデータを挿入したいが、そうすることができない "登録"用のAPIを作成しようとしています。djangoフレームワークのsqlalchemyを使ってmysql dbにデータを挿入するには?

私はauth_userのオブジェクトを作成しようとしています。session.add(auth_user_object) をしようとしていますが、エラーを出さず、mysql dbにデータを追加しないことさえありません。

dbからデータを取得(フェッチ)できました。

すべてのテーブルが作成されます。

私はinspect dbを実行しており、dbテーブルクラスを取得し、sqlalchemyに従ってそれを変更します。

ですが、sqlalchemyを使用してdbテーブルにデータを追加できません。

私を助けてください。 これを行うにはどのような方法が最適です。

私の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はデータベースクエリを作成するために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にデータ型を与えていませんでしたなぜエラーが出ていたのですか?

関連する問題