Ich sollte zuerst erwähnen, dass ich SqlAlchemy durch Flask-SqlAlchemy verwende. Ich glaube nicht, dass dies das Problem beeinflusst, aber wenn es so ist, lass es mich wissen.SqlAlchemy wird datetime.datetime.now Wert in einer DateTime Spalte nicht akzeptieren
Hier ist der relevante Teil der Fehlermeldung, die ich bekommen habe, wenn die create_all Funktion in sqlalchemy
läuftInterfaceError: (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'
Hier mein Modell:
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']
Kann mir jemand sagen, wie Ich kann das zur Arbeit bringen? Ich habe auch das folgende Modell ausprobiert, aber das funktioniert auch nicht. Derselbe Fehler.
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']
Sind Sie sicher, dass die 'last_updated' Spalte ist das Problem? Könnte es die 'feed_data'-Spalte sein (was ist Spalte 4, wenn Sie anfangen, von Null zu zählen)? Du versuchst schließlich, ein Wörterbuch (das Ergebnis von 'feedparser.parse (...)' in eine Spalte vom Typ Text zu setzen.) – srgerg
nun, das hat nichts mit der Frage zu tun, kannst du es mich bitte wissen lassen , wo ich anfangen soll, wenn ich ein einfaches ORM-Layout haben möchte – user993563
Ich denke, Sie sollten sqlalchemy.func.now() anstelle von datetime.datetime.now() verwenden – utapyngo