小编ebe*_*bis的帖子

在SQLAlchemy中设置索引限制

我想在Column定义中或通过Index构造函数设置索引的最大限制,但我似乎没有找到实现它的方法.

基本上,我想模拟这种MySQL行为:

CREATE TABLE some_table (
  id int(11) NOT NULL AUTO_INCREMENT,
  some_text varchar(2048) DEFAULT NULL,
  PRIMARY KEY (id),
  KEY some_text (some_text(1024)), # <- this line
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPRESSED;
Run Code Online (Sandbox Code Playgroud)

在SQLAlchemy我会有类似的东西:

class SomeTable(BaseModel):
  __tablename__ = 'some_table'
  __seqname__ = 'some_table_id_seq'

  id = sa.Column(sa.Integer(11), sa.Sequence(__seqname__), primary_key=True)
  some_text = sa.Column(sa.String(2048), index=True) # <- this line
Run Code Online (Sandbox Code Playgroud)

但我找不到任何可以定制索引限制的内容.就像是:

some_text = sa.Column(sa.String(2048), index=True, index_length=1024)
Run Code Online (Sandbox Code Playgroud)

我想因为Column构造函数的这个选项只是构造函数的别名Index,是否有一个自定义参数包含在Index构造函数中以允许此设置?

谢谢!

python mysql indexing sqlalchemy

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

使用Paramiko在远程机器上通过sshClient()执行本地python脚本

这是我在StackOverflow中的第一篇文章,所以我希望以正确的方式做到这一点!:)

我有这个任务要做我的新工作,需要连接到几个服务器并在所有服务器中执行python脚本.我对服务器不太熟悉(刚刚开始使用paramiko),所以我为任何重大错误道歉!

我想在它们上运行的脚本修改了authorized_keys文件,但是要开始,我只用一台服务器尝试它,还没有使用上面提到的脚本(我不想犯错误,在我的第一个任务中阻塞服务器!).我只是试图用一个名为getDir()的非常简单的函数列出远程机器中的目录.到目前为止,我已经能够使用基础知识连接到paramiko服务器(我正在使用pdb来调试脚本):

try_paramiko.py

#!/usr/bin/python

import paramiko
from getDir import get_dir
import pdb


def try_this(server):
    pdb.set_trace()
    ssh = paramiko.SSHClient()
    ssh.load_host_keys("pth/to/known_hosts")
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    my_key = paramiko.RSAKey.from_private_key_file("pth/to/id_rsa")
    ssh.connect(server, username = "root", pkey = my_key)
    i, o, e = ssh.exec_command(getDir())
Run Code Online (Sandbox Code Playgroud)

这是获取目录列表的功能:

getDir.py

#!/usr/bin/python

import os
import pdb


def get_dir():
    pdb.set_trace()
    print "Current dir list is:"
    for item in os.listdir(os.getcwd()):
        print item
Run Code Online (Sandbox Code Playgroud)

在调试时我得到了本地机器的目录列表而不是远程机器的目录列表...有没有办法通过paramiko传递python函数作为参数?我想在本地创建脚本并远程运行它,就像使用ssh中的bash文件一样:

ssh -i pth/to/key username@domain.com 'bash -s' < script.sh
Run Code Online (Sandbox Code Playgroud)

所以实际上要避免将python脚本复制到每台机器然后从它们运行它(我想用上面的命令,脚本也会被复制到远程机器然后被删除,对吧?)有没有办法做到这一点paramiko.sshClient()?

我还尝试修改代码并使用创建exec_command的通道的标准输出来列出保留脚本的目录,如:

try_paramiko.py

#!/usr/bin/python

import paramiko
from getDir import get_dir
import pdb


def try_this(server): …
Run Code Online (Sandbox Code Playgroud)

python paramiko

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

标签 统计

python ×2

indexing ×1

mysql ×1

paramiko ×1

sqlalchemy ×1