SqlAlchemy will not accept datetime.datetime.now in the DateTime column

I must first mention that I use SqlAlchemy through Flask-SqlAlchemy. I do not think this affects the problem, but if that happens, let me know.

Here is the relevant part of the error message that I get when running the create_all function in SqlAlchemy

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'

Here is my model:

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

Can someone tell me how can I make this work? I also tried the following model, but this also does not work. The same mistake.

 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'] 
+6
source share
4 answers

Try using datetime.datetime.utcnow() . This works for me.

+13
source
 last_updated = db.Column(db.DateTime, default=db.func.current_timestamp()) 

I think it will work

+5
source

Define imports from the class.

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

or

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

I did it

0
source

Look at your line:

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

There is no datetime.datetime.now attribute in python. However, there is a datetime.datetime.now() function in python. You just lacked a pair of parentheses.

-8
source

Source: https://habr.com/ru/post/913477/


All Articles