The ms sql codepage is windows-1254 (Turkish) and the database collation is "Turkish_CI_AS"

after changing the tds version to 10.0, it worked but I had to change the bootstrap.py to insert turkish chars to the database properly.

I had to use encode function to see turkish chars on the sql server properly.

This is how I use encode:
------
u.display_name = u'Example manager *ĞÜŞİÖÇ*'.encode('WINDOWS-1254')
-------------

I'm working on an empty test database to see if I can use mssql properly. When I start a real project, I'll use main database on postgresql with auth.py and others and I'll use the existing mssql database just to read some data and some occasional updates.

Now I'm looking for a working example of using two database connections.

I think I need model.DBSession for main database on postgresql and model.DBSession2 for mssql database. Working with postgresql and using utf8 for all strings is fine and I think its ok to use encode function for mssql server data.




On 19-12-2011 15:00, alonn wrote:
there seems to be an answer here:
http://www.saltycrane.com/blog/2011/09/notes-sqlalchemy-w-pyodbc-freetds-ubuntu/
for an almost exact problem, changing the tds_version number seemed to
help them. since I connected from a windows machine while you are
doing this from a linux machine like the url I provided.

If this doesn't work think about seperating the tg db (for auth,user
etc) from the mssql. and configure tg to use 2 databases.

I should also check on the created tg_user table what is the column
encoding on  the display_name column? what is the table encoding/
collation.


On Dec 19, 12:16 pm, Timuçin Kızılay<[email protected]>  wrote:
here is the summary of my problems with turbogears and mssql server
databases.

my odbc.ini in /etc/odbc.ini like this:
[test]
Driver = /usr/lib/odbc/libtdsodbc.so
Description = test
Server = 192.168.0.10
Port = 1433
Database = test
client charset = WINDOWS-1254
TDS_Version = 8.0

and my connection string in development.ini :
sqlalchemy.url = mssql+pyodbc://testuser:12345@test

when I run paster setup-app command, tha tables created ok but when
running bootstrap.py, if there are any non ascii character I get errors.

sqlalchemy.exc.ProgrammingError: (ProgrammingError) ('42000', '[42000]
[FreeTDS][SQL Server]The incoming tabular data stream (TDS) remote
procedure call (RPC) protocol stream is incorrect. Parameter 5: The
parameter name is invalid. (8005) (SQLExecDirectW)') 'INSERT INTO
tg_user (user_name, email_address, display_name, password, created)
OUTPUT inserted.user_id VALUES (?, ?, ?, ?, ?)' ('manager',
'[email protected]', 'Example manager
*\xc4\x9e\xc3\x9c\xc5\x9e\xc4\xb0\xc3\x96\xc3\x87*',
'77551410b646190fb691dd78085620e905bbdbbfc4a1cd23c0f76b7b71dd1a0d00cf005b2e 
f164e90ee61b6c9b6b9543a5742a5094e40d4123b6d751d5c122bc',
datetime.datetime(2011, 12, 19, 11, 27, 8, 957996))

I've edited bootstrap.py to put some non-asci chars to strings.

          u = model.User()
          u.user_name = u'manager'
          u.display_name = u'Example manager *ĞÜŞİÖÇ*'
          u.email_address = u'[email protected]'
          u.password = u'managepass'

I think I need to put some charset encodings of the database to
somewhere but I'm at a loss.

working with postgresql and utf8 database is ok, but I need to use an
existing mssql database with windows-1254 charset, that's why I'm trying
to solve this on a test database first.







-------- Original Message --------
Subject: RE: tg2 and mssql
Date: Mon, 19 Dec 2011 10:24:58 +0200
From: Alon Nisser<[email protected]>
To: Timuçin Kızılay<[email protected]>

Hey
Lets take this back to the tg google group so bigger experts than me
could help you
But I don’t think this a codepage problem (maybe this is, I didn’t see
the error log, btw I'm using utf8 in tg and the mssql is another
encoding and having no problem), bootstrap.py problems hints to another
direction
In order to find out the problem please post the error log you are getting

So repost this in the tg group with the full error log, and hopefully me
or someone else could help you out

-----Original Message-----
From: Timuçin Kızılay [mailto:[email protected]]
Sent: Monday, December 19, 2011 10:03 AM
To: alonn
Subject: Re: tg2 and mssql

Hello,

I have full administrative access to ms sql server and the user I use
have dbowner role in that database.
creating the tables is not problem.
I have used this connection string:
sqlalchemy.url = mssql+pyodbc://testuser:12345@test

and the table creation is ok now. But when I run paster setup-app
command, after table creation, runs bootstrap.py and I'm getting erros
(I think) its because of codepage problems.

Can you send me an example odbc.ini file to set the charset correctly?
My sql server is using windows-1254 charset and after finishing testing
with a newly quickstarted project, I need to use an existing production
database that I can not change the charset because it's being used by
another application. I can add extra tables but can not change the
existing tables so I need to use the existing codepage.

On 16-12-2011 21:26, alonn wrote:
1. I just finished a project with mssql and tg2.1.3. after some
wrestling works fine with sql alchemy , tg2 etc.
2. you should install pyodbc inside the project for this to work 3. do
you have full write access to the mssql db and in liberty of changing
it? since tg2 with authorization and autentication needs to build some
background tables. if (like me) you can already write to specific
tables in the mssql db but not in liberty of changing it - you'll have
to configure tg2 with 2 databases. here's a nice post on
that:http://www.blog.pythonlibrary.org/2009/06/13/using-multiple-
databases-in-turbogears-2/  also be warned - there are some problems
not specified here..
4. to get the model of the already generated tables in mssql besides
using reflection and autoload - that from my exprience didn't work as
expected with mssql (unlike with mysql - where this works fine) -
instead I used sqlautocode to auto generate the tables in sqlalchemy
declarative style.
http://turbogears.org/2.1/docs/main/Utilities/sqlautocode.html
5. my sqlalchemy.url connection string didn't involve pydobc just
mssql:user:blabla etc  maybe this is a problem

good luck!

On 16 דצמבר, 17:18, Timuçin Kızılay<[email protected]>    wrote:
On 15-12-2011 14:14, Alessandro Molina wrote:

2011/12/15 Timuçin Kızılay<[email protected]>:
Hello,

I have to write an application using ms sql server database. I have
to use an existing database that being used in the company and my
app should do some data entry and lots of reporting.

I'd like to use turbogears because the other option is to use .net.

I have some questions because I have only used postgresql with
turbogears before.

-first question is codepage issues. in tg I'll use utf8 and the
mssql database is not using unicode but using another codepage. I
think this will give me problems.

Using SQLA you can expose all your data using Unicode column, so
your application will just work on unicode objects without caring
too much about their representation on the database side.

When you connect to the engine you can specify which encoding that
database will use to represent strings, then on python you will just
get unicode strings.

- second: the database is already created and full of data so is
there any way to get the table definitions in model files automagicaly?

Yes, you can use table reflection.
The quickstarted project already has some commented lines of code
inside the model to guide you at setting it up.

You can even use sqlalchemy-migrate to autogenerate the model from
the tables, which gives you a little bit more control over your models.

- third: is there any sample code using mssql databases?

If you use SQLAlchemy (which is the default database layer for TG)
any example around should work correctly even on mssql.

I'm familiar with SQLAlchemy (in fact, SA is a good reason to use
tg2) and I have developed apps with tg2 and SA on postgresql but I'm
at a loss here to connect to ms sql server

I think I need a step by step guide to what libraries to install and
what connection string in development.ini file.

I'm getting this error when I run paster setup-app development.ini on
a newly quicstarted app to connect mssql database:

----------

sqlalchemy.exc.DBAPIError: (Error) ('08001', '[08001]
[unixODBC][FreeTDS][SQL Server]Unable to connect to data source (0)
(SQLDriverConnectW)') None None
----------

and my connection string in developmenbt.ini is this:

sqlalchemy.url = mssql+pyodbc://testuser:[email protected]:1433/test

I'm running TG2 on linux. (xubuntu 11.10 x64)-הסתר טקסט מצוטט-

-הראה טקסט מצוטט-


--
You received this message because you are subscribed to the Google Groups 
"TurboGears" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/turbogears?hl=en.

Reply via email to