我刚刚开始使用 FastAPI、SQLAlchemy、Pydantic,我正在尝试构建一个简单的 API 端点,以将 postgis 表中的行作为 geojson 特征集合返回。
这是我的sqlalchemy
模型:
class Poi(Base):
__tablename__ = 'poi'
id = Column(Integer, primary_key=True)
name = Column(Text, nullable=False)
type_id = Column(Integer)
geometry = Column(Geometry('POINT', 4326, from_text='ST_GeomFromEWKT'),
nullable=False)
Run Code Online (Sandbox Code Playgroud)
使用的geojson_pydantic
相关pydantic
型号有:
from geojson_pydantic.features import Feature, FeatureCollection
from geojson_pydantic.geometries import Point
from typing import List
class PoiProperties(BaseModel):
name: str
type_id: int
class PoiFeature(Feature):
id: int
geometry: Point
properties: PoiProperties
class PoiCollection(FeatureCollection):
features: List[PoiFeature]
Run Code Online (Sandbox Code Playgroud)
理想情况下,我希望能够检索并返回数据库记录,如下所示:
def get_pois(db: Session, skip: int = 0, limit: int …
Run Code Online (Sandbox Code Playgroud) 本周,我开始使用 MongoDB 和 Flask,因此我找到了一篇有用的文章,介绍如何通过使用 PyDantic 库定义 MongoDB 的模型来将它们一起使用。然而,这篇文章有点过时了,大部分可以更新到新的 PyDantic 版本,但问题是 ObjectId 是第三方字段,并且在版本之间发生了很大的变化。
本文使用以下代码定义了ObjectId:
from bson import ObjectId
from pydantic.json import ENCODERS_BY_TYPE
class PydanticObjectId(ObjectId):
"""
Object Id field. Compatible with Pydantic.
"""
@classmethod
def __get_validators__(cls):
yield cls.validate
#The validator is doing nothing
@classmethod
def validate(cls, v):
return PydanticObjectId(v)
#Here you modify the schema to tell it that it will work as an string
@classmethod
def __modify_schema__(cls, field_schema: dict):
field_schema.update(
type="string",
examples=["5eb7cf5a86d9755df3a6c593", "5eb7cfb05e32e07750a1756a"],
)
#Here you encode the ObjectId as …
Run Code Online (Sandbox Code Playgroud) 我正在调试一个 Flask 应用程序,想要查看哪些值存储在我的简单缓存中。有没有办法检索所有密钥?(就像你用字典一样......
cache = Cache()
cache.init_app(app, config={"CACHE_TYPE": "simple"})
cache.set("item-1", "red")
cache.set("item-2", "blue")
# I would like to do the following:
# cache.keys()
Run Code Online (Sandbox Code Playgroud) 我试图在该对象的 JSON 架构中允许 null:
from pydantic import BaseModel
from typing import Optional
class NextSong(BaseModel):
song_title: Optional[str] = ...
Run Code Online (Sandbox Code Playgroud)
但结果的模式如下:
{
"title": "NextSong",
"type": "object",
"properties": {
"song_title": {
"title": "Song Title",
"type": "string"
}
},
"required": ["song_title"]
}
Run Code Online (Sandbox Code Playgroud)
生成的架构不允许 Song_title 的值为 null,这不符合预期,但我不确定如何指定允许 null,但该字段仍然是必需的。
我正在使用 alembic 根据用户定义的 sqlalchemy 模型管理数据库迁移。我的挑战是我希望 alembic 忽略对特定表集的任何创建、删除或更改。
注意:我的 Q 类似于这个问题Ignoring a model when using alembic autogenerate但不同之处在于我想从模型定义之外控制 alembic。
这是我想忽略的示例表:
from sqlalchemy import MetaData
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base(metadata=MetaData())
class Ignore1(Base):
"""
Signed in to the account...
"""
__tablename__ = 'ignore_1'
__table_args__ = {
'info':{'skip_autogenerate':True}
}
id = Column(Integer, primary_key=True)
foo = Column(String(20), nullable=True)
Run Code Online (Sandbox Code Playgroud)
示例代码(不能解决我的问题):
在alembic/env.py
from sqlalchemy import MetaData
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base(metadata=MetaData())
class Ignore1(Base):
"""
Signed in to the account... …
Run Code Online (Sandbox Code Playgroud) 我有一堂这样的课:
class VoteEnum(enum.Enum):
like = "LIKE"
dislike = "DISLIKE"
abstain = "ABSTAIN"
Run Code Online (Sandbox Code Playgroud)
我有一个数据库来存储这些选票:
class MyVotes(db.Model):
__tablename__ = "my_votes"
id = db.Column(db.String, primary_key=True, default=lambda: str(uuid4()))
item = db.Column(db.String, nullable=False),
vote = db.Column(db.Enum(VoteEnum))
def __str__(self):
return json.dumps({
"id":self.id,
"item":self.item,
# I want to print the value of vote?
)}
Run Code Online (Sandbox Code Playgroud)
从 sqlalchemy (在 Flask 中)检索值并打印时,出现以下错误:
类型错误:MyVotes 类型的对象不可 JSON 序列化
也许有办法调用我的 sqlalchemy 请求?也许是类方法?我很感谢人们可以提供的任何帮助。
我正在将数据导入 pandas,并希望删除数据中存在的任何时区 \xe2\x80\x93。如果数据有时区,则以下代码可以成功运行:
\ncol = "my_date_column"\ndf[col] = pd.to_datetime(df[col]).dt.tz_localize(None) # We don\'t want timezones...\n
Run Code Online (Sandbox Code Playgroud)\n如果数据不包含时区,我想使用以下代码:
\ndf[col] = pd.to_datetime(df[col])\n
Run Code Online (Sandbox Code Playgroud)\n我的问题是我不确定如何测试 datetime object/series 中的时区。
\n我正在尝试使用XRDP (远程桌面协议)连接到远程桌面(Gnome Ubuntu)。但是,当我连接 Apache 的Guacamole或 Microsoft时远程桌面时,我遇到带有光标的黑屏。
我可以通过日志以及 ssh 登录和运行测试(proxmox 接口)来验证我的 Ubuntu 服务器是否正常运行。
有趣的是,当我使用xfce4
而不是gnome
时,我能够连接。但是,由于某种原因我无法使终端正常工作。如果我使用 proxmox 界面登录 gnome,当我在 xfce xrdp 会话中启动它时,我可以看到终端在我的 gnome 会话中弹出。
可能的问题可能包括我的启动/安装脚本:
# placeholder for script
Run Code Online (Sandbox Code Playgroud) 我需要将我的小 Flask 应用程序放入 Docker 容器中,该应用程序可以检查我公司的客户安装了哪种类型的 Google 标签。为此,我需要有 selenium-wire 。你提供一个网站,然后你会得到一个 json 返回,告诉你安装了哪些标签(有点像http://gachecker.com/)。现在它与 Flask 应用程序配合得很好。当我尝试将其放入 Docker 时出现问题,这是我的 docker 脚本:
FROM python:3.9 WORKDIR /bziiit_checker_app
RUN pip install flask flask_restful requests BeautifulSoup4 selenium-wire undetected-chromedriver chromedriver-py
COPY ./app ./app
CMD ["python", "./app/main.py"]
Run Code Online (Sandbox Code Playgroud)
Once it's in Docker and try to run it, i get that message
"selenium.common.exceptions.WebDriverException: Message: 'chromedriver' executable needs to be in PATH"
Run Code Online (Sandbox Code Playgroud)
Which is a common issue when the chromedriver.exe file is not in the working directory. But it IS. Do …
我已创建 Amazon RDS 实例,但无法在其中创建存储过程,因为我缺少超级用户权限。如何获得超级用户权限?
实例:MySQL 5.7.11
我正在尝试使用Google Apps脚本将用户添加到Google网上论坛。
这是我尝试过的代码:
// Adds a user to a Google Group
function addUsertoGroup(userEmail) {
var userEmail = 'Name@gmail.com'
var groupId = "group-name@googlegroups.com";
var group = GroupsApp.getGroupByEmail(groupId);
// If email is already in group
try { var hasMember = group.hasUser(userEmail);}
catch(e){Logger.log(userEmail+" is already in the group"); return}
var newMember = {email: userEmail, role: "MEMBER"};
// This is the line which is throwing an error
AdminDirectory.Members.insert(newMember, groupId);
Run Code Online (Sandbox Code Playgroud)
运行时,我收到一个错误:
对directory.groups.get的API调用失败,并出现以下错误:未找到域。
任何帮助,将不胜感激。
如何自动截断数据模型中多个属性的字符串值,而不需要@validates
为每个属性显式定义一种方法?
我当前的代码:
from sqlalchemy import Column, Integer, String
from sqlalchemy.orm import validates
class MyModel:
__tablename__ = 'my_model'
id = Column(Integer, primary_key=True, autoincrement=True)
name = Column(String(40), nullable=False, unique=True)
# I can "force" truncation to my model using "validates"
# I'd prefer not to use this solution though...
@validates('name')
def validate_code(self, key, value):
max_len = getattr(self.__class__, key).prop.columns[0].type.length
if value and len(value) > max_len:
value = value[:max_len]
return value
Run Code Online (Sandbox Code Playgroud)
我担心的是,我的 ORM 将跨越许多表和字段,并且在字符串长度验证中包含属性时存在很高的监督风险。简而言之,我需要一个可扩展的解决方案。理想情况下,我的会话配置中的某些内容会自动截断太长的字符串......
我想在 python3 的 f 字符串中打印一条消息,其中包含一个由 \n 分隔的列表。
my_list = ["Item1", "Item2", "Item3"]
print(f"Your list contains the following items:\n\n{my_list}")
Run Code Online (Sandbox Code Playgroud)
期望的输出:
# Your list contains the following items:
# Item1
# Item2
# Item3
Run Code Online (Sandbox Code Playgroud) python ×8
sqlalchemy ×4
pydantic ×3
fastapi ×2
python-3.x ×2
alembic ×1
amazon-ec2 ×1
amazon-rds ×1
caching ×1
datetime ×1
debian ×1
docker ×1
enums ×1
f-string ×1
flask ×1
geojson ×1
gnome ×1
google-api ×1
mongodb ×1
pandas ×1
postgresql ×1
selenium ×1
timezone ×1
ubuntu ×1
xrdp ×1