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

时间:2012-04-18 01:40:45

标签: 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']

有人可以告诉我如何让这个工作吗?我也试过以下模型,但这也不起作用。同样的错误。

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']

4 个答案:

答案 0 :(得分:14)

尝试使用datetime.datetime.utcnow()。这对我有用。

答案 1 :(得分:8)

<AnchorPane id="AnchorPane" prefHeight="332.0" prefWidth="409.0" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/8" fx:controller="fucktable.FXMLDocumentController">
    <children>
      <TableView fx:id="table" layoutX="42.0" layoutY="54.0" prefHeight="200.0" prefWidth="200.0">
        <columns>
          <TableColumn fx:id="col1" prefWidth="75.0" text="C1" />
          <TableColumn fx:id="col2" prefWidth="75.0" text="C2" />
        </columns>
      </TableView>
    </children>
</AnchorPane>

我认为这会起作用

答案 2 :(得分:2)

将导入设置为类。

performPause

from datetime import datetime

last_updated = db.Column(db.DateTime, default=datetime.now())

我做了这个

答案 3 :(得分:-8)

看看你的专栏:

last_updated = db.Column(db.DateTime, default=datetime.datetime.now)

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