我想使用 Python Pyramid Framework 和 SQL Alchemy 处理多个数据库。
我有 1 个包含用户信息的数据库,以及多个存储应用程序信息的数据库(具有相同的结构)。每个用户在登录时选择一个数据库,并且只显示来自该数据库(而不是其他数据库)的信息。
我应该如何构建我的代码?
我正在考虑在会话中保存 dbname 并在每个请求中检查所选数据库的用户权限并生成一个新的 db 会话。所以我的观点看起来像(伪代码):
@view_config(route_name='home', renderer='json')
def my_view_ajax(request):
try:
database = int(request.GET['database'])
# check user permissions from user database
engine = create_engine('postgresql://XXX:XXX@localhost/'+database)
DBSession.configure(bind=engine)
items = DBSession.query('table').all()
except DBAPIError:
return 'error'
return items
Run Code Online (Sandbox Code Playgroud)
我应该使用每个请求的用户信息生成一个新的数据库会话吗?或者,还有更好的方法?
谢谢
我有一个数据框,其中有多个具有相似列名的列。我希望用右侧有数据的列填充空单元格。
Address1 Address2 Address3 Address4 Phone1 Phone2 Phone3 Phone4
ABC nan def nan 9091-XYz nan nan XYZ-ABZ
Run Code Online (Sandbox Code Playgroud)
应该将列移到类似的位置
Address1 Address2 Address3 Address4 Phone1 Phone2 Phone3 Phone4
ABC def nan nan 9091-XYz XYZ-ABZ nan nan
Run Code Online (Sandbox Code Playgroud)
还有另一个问题可以解决类似的问题。
pdf = pd.read_csv('Data.txt',sep='\t')
# gets a set of columns removing the numerical part
columns = set(map(lambda x : x.rstrip('0123456789'),pdf.columns))
for col_pattern in columns:
# get columns with similar names
current = [col for col in pdf.columns if col_pattern in col]
coldf= pdf[current]
# …Run Code Online (Sandbox Code Playgroud) 我在django尝试一些东西.只是一个简单的表单,它将添加每次登录数据库的尝试.它导致ValueError:对于带有基数10的int()的无效文字:我检查了很多问题但是无法通过此错误.
我有这样的看法.
class LoginView(TemplateView):
template_name = 'dashboard/login.html'
def post(self,request):
#firstname,email=request.POST['firstname'],request.POST['email']
#currLogin = LoginForm(firstname,email)
currLogin = LoginForm(request.POST)
if currLogin.is_valid():
firstname= currLogin.cleaned_data['firstname']
email = currLogin.cleaned_data['email']
print firstname,email
users = LoginModel.objects.filter(email=email)
if not users:
login = LoginModel(firstname,email)
login.save()
else :
return users[0].id
return 0
Run Code Online (Sandbox Code Playgroud)
我的models.py文件包含:
class LoginModel(models.Model):
firstname = models.CharField(max_length=100)
email = models.CharField(max_length=100)
Run Code Online (Sandbox Code Playgroud)
我的form.py包含这个:
class LoginForm(forms.Form):
firstname = forms.CharField(label="firstname",max_length=100)
email = forms.CharField(label="email",max_length=100)
class Meta:
model = LoginModel
Run Code Online (Sandbox Code Playgroud)
堆栈跟踪 :
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/exception.py", line 39, in inner
response = get_response(request) …Run Code Online (Sandbox Code Playgroud) 我想找到每个城市的每个日期的计数,其中我的日期范围由两列 start_date 和 end_date 指定。
假设我创建了一个具有这样值的表。
create table abc (city varchar(30),start_date date , end_date date);
insert into abc values('a','2018-01-01','2018-01-03');
insert into abc values('b','2018-01-02','2018-01-05');
insert into abc values('a','2018-01-03','2018-01-06');
insert into abc values('b','2018-01-03','2018-01-03');
insert into abc values('a','2018-01-02','2018-01-02');
insert into abc values('b','2018-01-02','2018-01-05');
Run Code Online (Sandbox Code Playgroud)
我希望找到每个日期城市 a 和 b 的计数。在这里它应该告诉我这个。
a, 2018-01-01,1
a, 2018-01-02,2
a, 2018-01-03,2
a, 2018-01-04,1
a, 2018-01-05,1
a, 2018-01-06,1
b, 2018-01-02,2
b, 2018-01-03,3
b, 2018-01-04,2
b, 2018-01-05,2
Run Code Online (Sandbox Code Playgroud)
如果这是一个单一的日期,一个团体就会这样做。
任何帮助表示赞赏。
我对 Django 很陌生。我刚刚配置了它并尝试创建一个简单的 Hello world!Web应用程序。我正在一步一步地学习教程。我运行命令 python django-admin.py startproject mysite 它创建了 mysite 目录,其中另一个名为 mysite 的目录与 manage.py 一起在其中。子目录 mysite 有init .py init .pyc settings.py settings.pyc urls.py urls.pyc wsgi.py wsgi.pyc。
在外部 mysite 目录中,我创建了 views.py,其中包含以下代码:-
from django.http import HttpResponse
def hello(request):
return HttpResponse("Hello world!")
Run Code Online (Sandbox Code Playgroud)
在内部 mysite 目录中,在 urls.py 中,我有以下代码:-
from django.conf.urls import patterns, include, url
from mysite.views import *
urlpatterns = patterns('',
url(r'^hello/$', 'mysite.views.hello'),
Run Code Online (Sandbox Code Playgroud)
但我收到此错误:-
ImportError at /hello/
No module named views
Request Method: GET
Django Version: 1.6.2
Exception Type: ImportError
Exception Value: …Run Code Online (Sandbox Code Playgroud) 我已经安装了插件来从这里发送延迟消息rabbitmq-delayed-message-exchange。
我找不到在 python 中使用它的任何帮助。我刚刚开始使用 rabbitmq 。
这是我一直在尝试的:
import pika
connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()
channel.exchange_declare("test-x", type="x-delayed-message", arguments={"x-delayed-type":"direct"})
channel.queue_declare(queue='task_queue',durable=True)
channel.queue_bind(queue="task_queue", exchange="test-x", routing_key="task_queue")
channel.basic_publish(exchange='test-x',routing_key='task_queue',body='Hello World! Delayed',arguments={"x-delay":100})
print(" [x] Sent 'Hello World! Delayed'")
connection.close()
Run Code Online (Sandbox Code Playgroud)
以下是列出的交易所:
sudo rabbitmqctl list_exchanges
Listing exchanges ...
amq.direct direct
test-x x-delayed-message
amq.fanout fanout
amq.match headers
amq.headers headers
direct
amq.rabbitmq.trace topic
amq.topic topic
amq.rabbitmq.log topic
Run Code Online (Sandbox Code Playgroud)
我不知道如何将延迟参数传递给 basic_publish 函数
任何帮助表示赞赏
假设我有一个包含许多键的对象列表,我只想保留其中的某些键。这就是我的做法。
SO 上其他好的解决方案的问题是,如果键中不存在键以保持它仍然添加一个键,值未定义的值。
let data = [{
'a': 1,
'b': 2,
'c': 3
},
{
'a': 1,
'c': 3,
'd': 4
}]
const keys_to_keep = ['a', 'b']
data = data.map((obj) => {
Object.keys(obj).forEach(function(key) {
if(!keys_to_keep.includes(key))
delete obj[key]
});
return obj;
})
Run Code Online (Sandbox Code Playgroud)
输出 :
[ { a: 1, b: 2 }, { a: 1} ]
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法来完成这项工作。任何帮助表示赞赏。
我有一个城市列表(简单的cvs文件),我想在创建城市模型时填充citeis表.课程描述:
class City(models.Model):
city = modeld.CharField('city_name', max_length=50)
class Meta:
berbuse_name =....
...........
def __unicode__(self):
return self.city
Run Code Online (Sandbox Code Playgroud)
现在,我正在寻找的是在创建模型(DB表)时如何只执行一次.
我试图在这里做,因为这对我来说听起来很逻辑(比如在MS-sql等中构建一个sql脚本)
编辑:好吧,我想我问的是错误的....也许这个:我如何创建一个python函数,它将获取cvs文件并将其转换为json(同样,在模型本身,当它正在构建时)我应该这样做吗?
任何人都可以帮我这个吗?
我试图连续排序名称并创建一个逗号分隔的字符串,这将创建另一列.
这是我的示例data.frame.
df=data.frame(A=c("A","K","B","D","F"),B =c("E","C","D","A","K"))
A B
1 A E
2 K C
3 B D
4 D A
5 F K
Run Code Online (Sandbox Code Playgroud)
我想要获得的输出将是这样的
A B C
1 A E A , E
2 K C C , K
3 B D B , D
4 D A A , D
5 F K F , K
Run Code Online (Sandbox Code Playgroud)
到目前为止,我试过这个:
lapply(df,FUN=paste(sort(df$A,df$B),collapse=" , "))
mapply(FUN= function(x,y)paste(sort(x,y),collapse=" , "),df$A,df$B)
Run Code Online (Sandbox Code Playgroud)
在这里,我尝试对列值进行排序并使用它们来粘贴它们','以创建唯一的对名称.
任何帮助表示赞赏.
我有一个清单 [('a',2),('a',3),('b',3),('c',2),('b',4)]
我想总结所有类似的键,并获得[('a',5),('c',2),('b',7)]任何顺序是好的.
有没有更好的方法来做这个而不是使用字典.最好使用列表理解之类的东西[i for j in a for ...]
>>> a = [('a',2),('a',3),('b',3),('c',2),('b',4)]
>>> from collections import defaultdict
>>> d = defaultdict(int)
>>> for i,j in a:
... d[i] += j
...
>>> d
defaultdict(<type 'int'>, {'a': 5, 'c': 2, 'b': 7})
>>> zip(d.keys(),d.values())
[('a', 5), ('c', 2), ('b', 7)]
Run Code Online (Sandbox Code Playgroud)