小编Sig*_*ils的帖子

Flask sqlalchemy多对多插入数据

我试图在Flask-SQLAlchemy中建立多对多关系,但似乎我不知道如何填充"多对多标识符数据库".你能帮我理解我做错了什么以及应该怎么看?

class User(db.Model):
    __tablename__ = 'users'
    user_id = db.Column(db.Integer, primary_key=True)
    user_fistName = db.Column(db.String(64))
    user_lastName = db.Column(db.String(64))
    user_email = db.Column(db.String(128), unique=True)


class Class(db.Model):
    __tablename__ = 'classes'
    class_id = db.Column(db.Integer, primary_key=True)
    class_name = db.Column(db.String(128), unique=True)
Run Code Online (Sandbox Code Playgroud)

然后我的标识符数据库:

student_identifier = db.Table('student_identifier',
    db.Column('class_id', db.Integer, db.ForeignKey('classes.class_id')),
    db.Column('user_id', db.Integer, db.ForeignKey('users.user_id'))
)
Run Code Online (Sandbox Code Playgroud)

到目前为止,当我尝试将数据插入数据库时​​,它看起来像这样.

# User
user1 = User(
            user_fistName='John',
            user_lastName='Doe',
            user_email='john@doe.es')

user2 = User(
            user_fistName='Jack',
            user_lastName='Doe',
            user_email='jack@doe.es')

user3 = User(
            user_fistName='Jane',
            user_lastName='Doe',
            user_email='jane@doe.es')

db.session.add_all([user1, user2, user3])
db.session.commit()

# Class
cl1 = Class(class_name='0A')
cl2 = …
Run Code Online (Sandbox Code Playgroud)

python sqlalchemy flask flask-sqlalchemy

58
推荐指数
2
解决办法
4万
查看次数

Flask-RESTful - 上传图片

我想知道如何通过创建API服务上传文件?

class UploadImage(Resource):
    def post(self, fname):
        file = request.files['file']
        if file:
            # save image
        else:
            # return error
            return {'False'}
Run Code Online (Sandbox Code Playgroud)

路线

api.add_resource(UploadImage, '/api/uploadimage/<string:fname>')
Run Code Online (Sandbox Code Playgroud)

然后是HTML

   <input type="file" name="file">
Run Code Online (Sandbox Code Playgroud)

我在服务器端启用了CORS

我使用angular.js作为前端和ng-upload,如果这很重要,但也可以使用CURL语句!

python flask flask-restful

13
推荐指数
4
解决办法
3万
查看次数

SQLAlchemy group_concat和duplicates

当我尝试加入多对多表并通过main-id对其进行分组时,当我添加第二个多对多表时,我得到重复.

以下是我的模型的样子:

楷模

用户

class User(UserMixin, db.Model):
    id = db.Column(db.Integer, primary_key=True)
    user_fistName = db.Column(db.String(64))
    ...
Run Code Online (Sandbox Code Playgroud)

student_identifier

student_identifier = db.Table('student_identifier',
    db.Column('class_id', db.Integer, db.ForeignKey('class.class_id')),
    db.Column('id', db.Integer, db.ForeignKey('user.id'))
)
Run Code Online (Sandbox Code Playgroud)

class Class(db.Model):
    sqlite_autoincrement=True
    class_id = db.Column(db.Integer, primary_key=True)
    class_name = db.Column(db.String(128), unique=True)
    mm_children = db.relationship('User', secondary=student_identifier, backref=db.backref('classes'))
Run Code Online (Sandbox Code Playgroud)

class_course_identifier

class_course_identifier = db.Table('class_course_identifier',
    db.Column('course_id', db.Integer, db.ForeignKey('course.course_id')),
    db.Column('class_id', db.Integer, db.ForeignKey('class.class_id'))
)
Run Code Online (Sandbox Code Playgroud)

数据库结构

mydatabase  - 呃图

好吧,我正在使用SQLAlchemy选择我想要的数据所需的表.这个session.query

db.session.query(
   Class.class_id,
   Class.class_name,
   func.group_concat(User.user_fistName),
   func.group_concat(Course.course_name)
   ).filter(Class.courses, User.classes).group_by(Class.class_id)
Run Code Online (Sandbox Code Playgroud)

问题是我得到了课程和名称的重复,所以如果课程有两个用户,它将打印学生和课程两次.这是它的样子:

错误的看法 现在看起来如何

以下是它的外观:

正确的观点 正确的观察方式

问题

当我添加第二个多对多表时,问题就出现了,例如users/student-identifier.如果我删除我"加入"它的行,我得到重复.反正有没有纠正这个?或者我应该使用RAW-SQL(如果是,如何使用?)

python sqlalchemy flask flask-sqlalchemy

8
推荐指数
1
解决办法
6631
查看次数

如何正确设置Node,Express和Angular2

我正在尝试使用Node,Express,Angular2(数据库, - MongoDB或SQL)设置工作区

但我不确定如何正确设置它.到目前为止,我的文件结构看起来像这样,我打算将前端放在公共文件夹下.

?? package.json
??? public
??? routes
?   ??? test.js
??? server.js
??? views
Run Code Online (Sandbox Code Playgroud)

到目前为止,我的server.js看起来像这样

var express = require('express');
var mysql = require('mysql');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var path = require('path');

var lel = require('./routes/test');

var app = express();

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false}));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));

app.use('/api/', test);

app.use(function(req, res, next) {
    // error handling
});


var server = app.listen(3000, function() {
    // shows the connection etc
});

module.exports = app; …
Run Code Online (Sandbox Code Playgroud)

javascript node.js angularjs angular

8
推荐指数
1
解决办法
1万
查看次数

使用mongoose更新,不返回任何错误但不更新

我正在尝试用猫鼬学习CRUD.我只是错过了更新部分.我究竟做错了什么?

我的模特

var mongoose = require('mongoose');

var testSchema = new mongoose.Schema({
    name: String,
    number: Number
});

mongoose.model('TestData', testSchema);
Run Code Online (Sandbox Code Playgroud)

我的路线

// get the models
var Test = mongoose.model('TestData');
Run Code Online (Sandbox Code Playgroud)

PARAM
如果链接具有'test'作为url参数,它将查看对象是否存在于数据库中,否则返回错误.

router.param('test', function(req, res, next, id){
    var query = Test.findById(id);

    query.exec(function(err, test){
        if(err){ return next(err); }
        if(!test){ return next(new Error('can\'t find test')); }
        req.test = test;
        return next();
    });
});
Run Code Online (Sandbox Code Playgroud)

GET BY ID

    /* GET testdata/:id */
    router.get('/testingdata/:test', function(req, res, next){
        req.test.populate('test', function(err, test){
            res.json(test);
        });
    });
Run Code Online (Sandbox Code Playgroud)

删除

/* DELETE …
Run Code Online (Sandbox Code Playgroud)

javascript mongoose node.js

7
推荐指数
1
解决办法
3224
查看次数

一周一天,一天一年

我想知道你如何通过给予日,周数和年份来获得月份.

例如,如果你有这样的东西

def getmonth(day, week, year):
    # by day, week and year calculate the month
    print (month)

getmonth(28, 52, 2014)
# print 12

getmonth(13, 42, 2014)
# print 10

getmonth(6, 2, 2015)
# print 1
Run Code Online (Sandbox Code Playgroud)

python python-3.x

6
推荐指数
1
解决办法
994
查看次数

使用PyMongo更新数组内的对象

我想知道如何通过选择文档(行)然后进入嵌套数组并选择特定对象来更新PyMongo/MongoDB的嵌套数组.

{
    "_id"    : "12345",
    "name"   : "John Doe,
    "mylist" : [
         {
            "nested_id" : "1",
            "data1"     : "lorem ipsum",
            "data2"     : "stackoverflow",
            "data3"     : "james bond"
         },
         {
            "nested_id" : "2",
            "data1"     : "lorem ipsum",
            "data2"     : "stackoverflow",
            "data3"     : "james bond"
         },
         {
            ....
         }     
      ]
}
Run Code Online (Sandbox Code Playgroud)

然后让我们说你通过自己想要更新的元素.在此示例中,仅更新data1data3

data = {
   "data1" : "new lorem",
   "data3" : "goldeneye"       
} 
Run Code Online (Sandbox Code Playgroud)

我尝试使用以下语法,但没有成功.

db.testing.find_and_modify(
            query={"_id": "12345", 'mylist.nested_id' : "1"},
            update={"$set": {'mylist' : data}})
Run Code Online (Sandbox Code Playgroud)

更新后应该是什么样子

{
        "_id" …
Run Code Online (Sandbox Code Playgroud)

python mongodb pymongo mongodb-query

6
推荐指数
1
解决办法
4083
查看次数

用PBKDF2腌制和腌制

我正在尝试通过哈希和盐析在数据库中保存密码来学习密码学,所以我决定尝试使用登录系统来实现这个系统.

我的数据库包括

  • UserID int PK
  • 用户名varchar(250)
  • varbinary(64)
  • 密码varbinary(64)
  • RegDate 日期时间
  • 电子邮件varchar(250)

我正在使用PBKDF2,但似乎这不是一个散列/腌制方法,如果它不是什么呢?

如果是这样,我这样做对吗?

我的钥匙

private const int SALT_SIZE = 64;
private const int KEY_SIZE = 64;
Run Code Online (Sandbox Code Playgroud)

将数据插入数据库

public static void RegisterMe(string _username, string _password, string _email)
        {
            using (var cn = new SqlConnection(User.strcon))
            {
                string _sqlins = @"
                    INSERT INTO 
                    [User]
                        ([Username],[Salt],[Password],[RegDate], [Email]) 
                    VALUES 
                        (@Username, @Salt, @Password, CURRENT_TIMESTAMP, @Email)";

                var cmd = new SqlCommand(_sqlins, cn);
                cn.Open();
                using (var deriveBytes = new Rfc2898DeriveBytes(_password, SALT_SIZE))
                { …
Run Code Online (Sandbox Code Playgroud)

c# encryption hash cryptography pbkdf2

3
推荐指数
1
解决办法
1247
查看次数

SQLAlchemy 和 RAW SQL:列表作为输入

我正在使用 Flask-SQLAlchemy,但在 SQL 语法中的 IN 子句中遇到了一些问题。我希望我的 IN 子句“读取”的数据是一个包含一些数据的列表,例如

args = [1, 2, 3]
Run Code Online (Sandbox Code Playgroud)

这是我的代码的样子。

connection = db.session.connection()
raw_sql = text("""
        SELECT
          *
        FROM 
         table
        WHERE data IN :list
        """)
query = connection.engine.execute(raw_sql, {'list' : args})
Run Code Online (Sandbox Code Playgroud)

我试过给 args 参数插入元组和列表,但没有任何效果。我要么得到:

  • Python 'tuple' 不能转换为 MySQL 类型 args = tuple([1, 2, 3])
  • Python 'list' 无法转换为 MySQL 类型,使用时 args = [1, 2, 3]


您如何使用 SQLAlchemy 从列表中读取并使用 RAW SQL 和参数作为输入?

python mysql sqlalchemy flask flask-sqlalchemy

3
推荐指数
1
解决办法
4005
查看次数

Visual Studio 2012和Umbraco 7

我试图在Visual Studio 2012中从NuGet安装一个干净的Umbraco安装,但是当我尝试运行代码时出现此错误

你调用的对象是空的.

[NullReferenceException: Object reference not set to an instance of an object.]
   Umbraco.Web.UmbracoModule.BeginRequest(HttpContextBase httpContext) +16
   Umbraco.Web.UmbracoModule.<Init>b__8(Object sender, EventArgs e) +253
   System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +136
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +69
Run Code Online (Sandbox Code Playgroud)

我如何做的步骤

  1. 新项目
  2. ASP.NET MVC 4 Web应用程序
  3. 空[解决方案模板]
  4. 打开包管理器控制台
  5. 安装nuget; PM>安装包UmbracoCms
  6. 构建解决方案
  7. 得到我的错误

注意:我正在安装V7.1.1并使用Visual Studio 2012 Professional

asp.net umbraco nuget visual-studio-2012

1
推荐指数
1
解决办法
1683
查看次数

MongoDB - FindOne并过滤嵌套数组

我正在从SQL迁移到NoSQL,我正在尝试学习基础知识.但到目前为止,我一直在努力与一个"选择声明"

可以说我有这种收藏品

文件1

{
  "_id" : "id1",
  "name" : "aa",
  "array"  : [
       {
          "nested_id"  : "n323123",
          "nesteddata" : "lorem",
          "active"     : 1
       },
       {
          "nested_id"  : "n353123",
          "nesteddata" : "lorem",
          "active"     : 0
       },
       {
          "nested_id"  : "n323123",
          "nesteddata" : "lorem",
          "active"     : 1
       }   
   ] 
}
Run Code Online (Sandbox Code Playgroud)

文件2

{
      "_id" : "id2",
      "name" : "bb",
      "array"  : [
           {
              "nested_id"  : "n325123",
              "nesteddata" : "lorem",
              "active"     : 1
           },
           {
              "nested_id"  : "n355123",
              "nesteddata" : "lorem",
              "active"     : 1 …
Run Code Online (Sandbox Code Playgroud)

mongodb

1
推荐指数
1
解决办法
5669
查看次数