【问题标题】:How to insert data in mysql db using sqlalchemy from django framework?如何使用 django 框架中的 sqlalchemy 在 mysql db 中插入数据?
【发布时间】:2017-06-30 16:31:07
【问题描述】:

我是 django 框架的新手,我正在尝试为“注册”创建一个 api,我想在执行后将数据插入数据库但无法这样做。

我正在尝试创建 auth_user 的对象并尝试做session.add(auth_user_object) 但它没有给出任何错误,甚至没有将数据添加到 mysql db。

我能够从 db 获取(获取)数据。

所有表都已创建。

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

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

请帮助我。 这样做的最佳方法是什么。

我的模型.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']

我的意见.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 = "vivek@gmail.com"
    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')

【问题讨论】:

  • 在开始实施之前先阅读 Django 文档。你不需要使用 SQL alchemy。

标签: python mysql django orm sqlalchemy


【解决方案1】:

您不需要在 Django 中使用 SQL alchemy。 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/

【讨论】:

【解决方案2】:

我错误地没有为 Id 提供数据类型,这就是错误出现的原因。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-17
    • 2016-10-04
    • 1970-01-01
    • 2020-08-20
    • 2022-01-20
    • 1970-01-01
    • 1970-01-01
    • 2012-02-05
    相关资源
    最近更新 更多