Thanks Michael. I should form a habit of trying it. It wasn't because I didn't want to, it was because I always fear that if I'm not careful with data I could ruin the precious data at one keystroke. So I kind of always ask before doing, lol.
On Wed, Jan 7, 2015 at 3:47 PM, Michael Bayer <mike...@zzzcomputing.com> wrote: > > Hi Bao - > > Why don’t you just try it? As I’ve said, pysqlite returns unicode for > strings already so the SQLAlchemy type isn’t really important except in > some in-Python expression situations (like getting the + operator to do > string concatenation). > > Your table is returning everything as NullType because that table def > doesn’t actually have any types in it. > > > > > Bao Niu <niuba...@gmail.com> wrote: > > > Hi Michael, I don't have any problem having them all as NullType, but I > just want to make sure the SQLite will deal with smoothly even when they > are actually not NullType but Unicode/UnicodeText types. May I just go > ahead and use NullType here instead of explicitly re-define all those > columns as Unicode/UnicodeText? Please give a little hint here. Thanks. > > > > On Wed, Jan 7, 2015 at 1:06 PM, Bao Niu <niuba...@gmail.com> wrote: > > Here is what I got from sqlite> select sql from sqlite_master where > name=‘<tablename>’; > > > > CREATE TABLE "persons" ("ID" ,"名" ,"中间名" ,"姓" ,"类别" ,"生日" ,"主要电话" > ,"住宅传真" ,"住宅地址国家地区" ,"住宅地址市县" ,"住宅地址街道" ,"住宅地址邮政编码" ,"住宅电话" ,"住宅电话2" > ,"其他传真" ,"其他地址国家地区" ,"其他地址市县" ,"其他地址省市自治区" ,"其他地址街道" ,"其他地址邮政编码" ,"其他电话" > ,"办公地点" ,"单位" ,"单位主要电话" ,"商务传真" ,"商务地址国家地区" ,"商务地址市县" ,"商务地址省市自治区" > ,"商务地址街道" ,"商务地址邮政编码" ,"商务电话" ,"商务电话2" ,"寻呼机" ,"无绳电话" ,"电子邮件2地址" ,"电子邮件3地址" > ,"电子邮件地址" ,"移动电话" ,"经理姓名" ,"网页" ,"职务" ,"部门" ,"配偶" ,"附注" ) > > > > > > Sorry for all non-ASCII characters, those are my native language<32B.gif> > > > > On Wed, Jan 7, 2015 at 9:53 AM, Michael Bayer <mike...@zzzcomputing.com> > wrote: > > the two cases where NullType() is still returned are if the type is > defined as BLOB or as NULL in the SQLAlchemy database. change those and > you won’t get any NullType. post your table defs here using: > > > > sqlite> select sql from sqlite_master where name=‘<tablename>’; > > > > > > > > > > > > Bao Niu <niuba...@gmail.com> wrote: > > > > > Thank you Michael. > > > > > > I've read the documentation that you quoted very carefully but still > not very sure in my case. You said that since 0.9.3 this issue has been > resolved, but I'm using 0.9.8 on Ubuntu and still get NullTypes. If I'm > using sqlalchemy MetaData.reflect() or automap extensions, together with > SQLite database, I do not need to worry about these Unicode issues? Is > there a newbie-friendly configuration step-by-step tutorial on this issue? > Thanks. > > > > > > On Mon, Jan 5, 2015 at 4:56 PM, Michael Bayer < > mike...@zzzcomputing.com> wrote: > > > > > > > > > Bao Niu <niuba...@gmail.com> wrote: > > > > > > > > > > > I have a couple of questions regarding the Unicode/UnicodeText > column type here. > > > > > > > > 1) I'm using Python 3, do I still need to explicitly use > Unicode/UnicodeText type to define my columns? I thought Python 3 > inherently supports unicode? > > > > > > it does, but your database (often) does not. the unicode-ness defines > the storage of the type on the DB side, not as much the conversion on the > Python side which you can get with convert_unicode=True. Sqlite has native > unicode on both py2k and py3k so not a big deal there. > > > > > > > > > > > 2) If I use MetaData.reflect(), it seems to me that all the columns > are reflected to be NullType(), regardless how I set it in the database. > How can I overcome this? > > > > > > SQLite doesn’t have real “types”, so up until version 0.9.2 we only > reflect whats given for a fixed set of names. as of 0.9.3 we always > resolve to an affinity so you should never get null type: > > > > > > > http://docs.sqlalchemy.org/en/rel_0_9/dialects/sqlite.html#type-reflection > > > > > > > > > > > > > > > > > > > What I did is like this: > > > > import sqlalchemy > > > > > > > > > > > > eng = sqlalchemy.create_engine('sqlite:///foobar.db') > > > > meta2 = sqlalchemy.MetaData(eng) > > > > meta2.reflect() > > > > > > > > meta2.tables['entries'].c['foo'].type > > > > > > > > > > > > and I got NullType here even though I'm pretty sure I defined it to > unicode in my database. > > > > > > > > -- > > > > You received this message because you are subscribed to the Google > Groups "sqlalchemy" group. > > > > To unsubscribe from this group and stop receiving emails from it, > send an email to sqlalchemy+unsubscr...@googlegroups.com. > > > > To post to this group, send email to sqlalchemy@googlegroups.com. > > > > Visit this group at http://groups.google.com/group/sqlalchemy. > > > > For more options, visit https://groups.google.com/d/optout. > > > > > > -- > > > You received this message because you are subscribed to a topic in the > Google Groups "sqlalchemy" group. > > > To unsubscribe from this topic, visit > https://groups.google.com/d/topic/sqlalchemy/BrFN-qjkrqY/unsubscribe. > > > To unsubscribe from this group and all its topics, send an email to > sqlalchemy+unsubscr...@googlegroups.com. > > > To post to this group, send email to sqlalchemy@googlegroups.com. > > > Visit this group at http://groups.google.com/group/sqlalchemy. > > > For more options, visit https://groups.google.com/d/optout. > > > > > > > > > -- > > > You received this message because you are subscribed to the Google > Groups "sqlalchemy" group. > > > To unsubscribe from this group and stop receiving emails from it, send > an email to sqlalchemy+unsubscr...@googlegroups.com. > > > To post to this group, send email to sqlalchemy@googlegroups.com. > > > Visit this group at http://groups.google.com/group/sqlalchemy. > > > For more options, visit https://groups.google.com/d/optout. > > > > -- > > You received this message because you are subscribed to a topic in the > Google Groups "sqlalchemy" group. > > To unsubscribe from this topic, visit > https://groups.google.com/d/topic/sqlalchemy/BrFN-qjkrqY/unsubscribe. > > To unsubscribe from this group and all its topics, send an email to > sqlalchemy+unsubscr...@googlegroups.com. > > To post to this group, send email to sqlalchemy@googlegroups.com. > > Visit this group at http://groups.google.com/group/sqlalchemy. > > For more options, visit https://groups.google.com/d/optout. > > > > > > > > -- > > You received this message because you are subscribed to the Google > Groups "sqlalchemy" group. > > To unsubscribe from this group and stop receiving emails from it, send > an email to sqlalchemy+unsubscr...@googlegroups.com. > > To post to this group, send email to sqlalchemy@googlegroups.com. > > Visit this group at http://groups.google.com/group/sqlalchemy. > > For more options, visit https://groups.google.com/d/optout. > > -- > You received this message because you are subscribed to a topic in the > Google Groups "sqlalchemy" group. > To unsubscribe from this topic, visit > https://groups.google.com/d/topic/sqlalchemy/BrFN-qjkrqY/unsubscribe. > To unsubscribe from this group and all its topics, send an email to > sqlalchemy+unsubscr...@googlegroups.com. > To post to this group, send email to sqlalchemy@googlegroups.com. > Visit this group at http://groups.google.com/group/sqlalchemy. > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To unsubscribe from this group and stop receiving emails from it, send an email to sqlalchemy+unsubscr...@googlegroups.com. To post to this group, send email to sqlalchemy@googlegroups.com. Visit this group at http://groups.google.com/group/sqlalchemy. For more options, visit https://groups.google.com/d/optout.