SqlAlchemy不接受DateTime列中的datetime.datetime.now值

Kyl*_*lee 13 python sqlalchemy flask-sqlalchemy

我首先应该提到我通过Flask-SqlAlchemy使用SqlAlchemy.我不相信这会影响这个问题,但如果确实如此,请告诉我.

以下是我在SqlAlchemy中运行create_all函数时收到的错误消息的相关部分

InterfaceError: (InterfaceError) Error binding parameter 4 - probably unsupported type. u'INSERT INTO podcasts (feed_url, title, url, last_updated, feed_data) VALUES (?, ?, ?, ?, ?)' (u'http://example.com/feed', u'Podcast Show Title', u'http://example.com', '2012-04-17 20:28:49.117000'

这是我的模型:

class Podcast(db.Model):
    import datetime
    __tablename__ = 'podcasts'
    id = db.Column(db.Integer, primary_key=True)
    feed_url = db.Column(db.String(150), unique=True)
    title = db.Column(db.String(200))
    url = db.Column(db.String(150))
    last_updated = db.Column(db.DateTime, default=datetime.datetime.now)
    feed_data = db.Column(db.Text)

    def __init__(self, feed_url):
        import feedparser

        self.feed_url = feed_url
        self.feed_data = feedparser.parse(self.feed_url)
        self.title = self.feed_data['feed']['title']
        self.url = self.feed_data['feed']['link']
Run Code Online (Sandbox Code Playgroud)

有人能告诉我如何才能让它发挥作用吗?我也尝试了以下模型,但这也行不通.同样的错误.

class Podcast(db.Model):
    import datetime
    __tablename__ = 'podcasts'
    id = db.Column(db.Integer, primary_key=True)
    feed_url = db.Column(db.String(150), unique=True)
    title = db.Column(db.String(200))
    url = db.Column(db.String(150))
    last_updated = db.Column(db.DateTime)
    feed_data = db.Column(db.Text)

    def __init__(self, feed_url):
        import feedparser

        self.feed_url = feed_url
        self.feed_data = feedparser.parse(self.feed_url)
        self.last_updated = datetime.datetime.now()
        self.title = self.feed_data['feed']['title']
        self.url = self.feed_data['feed']['link']
Run Code Online (Sandbox Code Playgroud)

Bij*_*jan 14

尝试使用datetime.datetime.utcnow().这适合我.


Sav*_* KP 8

last_updated = db.Column(db.DateTime, default=db.func.current_timestamp())
Run Code Online (Sandbox Code Playgroud)

我认为这会奏效


ada*_*mek -9

看看你的行:

last_updated = db.Column(db.DateTime, default=datetime.datetime.now)
Run Code Online (Sandbox Code Playgroud)

python中没有datetime.datetime.now属性。不过, python中一个datetime.datetime.now() 函数。你只是少了一对括号。

  • 不,sqlalchemy 需要一个可调用的。如果添加括号,您将获得所有条目的常量值。 (7认同)
  • @adamek `something.myfunc` 返回函数本身,而不调用它;这是期望的行为。如果您调用该函数,您将仅检索一次并将其用作默认值,这是一种不同的行为,并且是不需要的。 (3认同)