[Ironpython-users] IronPython SQLite interface

Jeff Hardy jdhardy at gmail.com
Tue Feb 11 10:39:44 CET 2014


On Mon, Feb 10, 2014 at 10:15 PM, Slide <slide.o.mix at gmail.com> wrote:
> That seems a little odd. Perhaps Jeff can shed some light on it, I think he
> wrote the SQLite adaptation layer.

I did, but the funny code is part of the C#-sqlite library, which is a
port of the C library to C#. (if you're feeling brave, dig through the
code. It's ... interesting.) It looks like the author just assumed
Windows-ish systems in all cases, and Doug has to go and break
everything by trying to run it on Unix. :(

I have no idea what that code is trying to do (context:
https://github.com/IronLanguages/main/blob/master/Languages/IronPython/IronPython.SQLite/c%23sqlite/os_win_c.cs#L2646);
it might be some vestigial part of SQLite that's not needed. Since //
seems OK I'm assuming that's the case.

Doug, can you open an issue? And in the meantime, is using // an
acceptable workaround?

- Jeff

>
>
> On Mon, Feb 10, 2014 at 3:14 PM, Doug Blank <doug.blank at gmail.com> wrote:
>>
>> That must be the issue, as "//home/dblank/name.db" works:
>>
>> $ ipy.exe
>> IronPython 2.9.9a0 DEBUG (2.9.0.0) on Mono 4.0.30319.1 (64-bit)
>> Type "help", "copyright", "credits" or "license" for more information.
>> >>> import sqlite3
>> >>> sqlite3.connect("//home/dblank/test.db")
>> <Connection object at 0x000000000000002B>
>> >>>
>>
>> -Doug
>>
>>
>>
>> On Mon, Feb 10, 2014 at 5:12 PM, Doug Blank <doug.blank at gmail.com> wrote:
>>>
>>> After more testing, it appears that it only fails when the path begins
>>> with a slash "/".
>>>
>>> I see:
>>>
>>> ./c#sqlite/os_win_c.cs:      if ( zConverted.StartsWith( "/" ) &&
>>> !zConverted.StartsWith( "//"
>>>
>>> I'll try a couple of more things...
>>>
>>> -Doug
>>>
>>>
>>> On Mon, Feb 10, 2014 at 9:19 AM, Doug Blank <doug.blank at gmail.com> wrote:
>>>>
>>>>
>>>> On Mon, Feb 10, 2014 at 8:47 AM, Slide <slide.o.mix at gmail.com> wrote:
>>>>>
>>>>> All the connect call does is this:
>>>>>
>>>>> int rc = Sqlite3.sqlite3_open(database, out this.db);
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> if(rc != Sqlite3.SQLITE_OK)
>>>>>     throw GetSqliteError(this.db, null);
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> Which makes me thing that sqlite3_open is returning an error code. What
>>>>> happens if you do the same in CPython?
>>>>
>>>>
>>>> No error, creates a file of length 0, and works:
>>>>
>>>> $ python
>>>> Python 2.7.5+ (default, Sep 19 2013, 13:48:49)
>>>> [GCC 4.8.1] on linux2
>>>> Type "help", "copyright", "credits" or "license" for more information.
>>>> >>> import sqlite3
>>>> >>> sqlite3.connect("/home/dblank/test.db")
>>>> <sqlite3.Connection object at 0x7fc3c21b6118>
>>>> >>>
>>>>
>>>> $ ls -al /home/dblank/test.db
>>>> -rw-r--r-- 1 dblank dblank 0 Feb 10 09:15 /home/dblank/test.db
>>>>
>>>> -Doug
>>>>
>>>>
>>>>>
>>>>>
>>>>>
>>>>> On Fri, Feb 7, 2014 at 6:01 AM, Doug Blank <doug.blank at gmail.com>
>>>>> wrote:
>>>>>>
>>>>>>
>>>>>> On Fri, Feb 7, 2014 at 7:47 AM, Slide <slide.o.mix at gmail.com> wrote:
>>>>>>>
>>>>>>> Do you get a specific error message?
>>>>>>
>>>>>>
>>>>>> Sorry, yes:
>>>>>>
>>>>>> Traceback (most recent call last):
>>>>>>   File "<string>", line 1, in <module>
>>>>>> _sqlite3.OperationalError: unable to open database file
>>>>>>
>>>>>> Does this work for you? I get this error running latest ipy.exe (Mono
>>>>>> 2.10, Ubuntu 13.10) and IronPython in Calico.
>>>>>>
>>>>>> -Doug
>>>>>>
>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On Fri, Feb 7, 2014 at 5:37 AM, Doug Blank <doug.blank at gmail.com>
>>>>>>> wrote:
>>>>>>>>
>>>>>>>> Just recently discovered the sqlite3 port for IronPython, but having
>>>>>>>> some basic trouble:
>>>>>>>>
>>>>>>>> This works fine:
>>>>>>>>
>>>>>>>> import sqlite3
>>>>>>>> sqlite3.connect("test.db")
>>>>>>>>
>>>>>>>> but this doesn't:
>>>>>>>>
>>>>>>>> import sqlite3
>>>>>>>> sqlite3.connect("/home/dblank/test.db")
>>>>>>>>
>>>>>>>> Any ideas?
>>>>>>>>
>>>>>>>> -Doug
>>>>>>>>
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> Ironpython-users mailing list
>>>>>>>> Ironpython-users at python.org
>>>>>>>> https://mail.python.org/mailman/listinfo/ironpython-users
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> Website: http://earl-of-code.com
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Website: http://earl-of-code.com
>>>>>
>>>>> _______________________________________________
>>>>> Ironpython-users mailing list
>>>>> Ironpython-users at python.org
>>>>> https://mail.python.org/mailman/listinfo/ironpython-users
>>>>>
>>>>
>>>
>>
>
>
>
> --
> Website: http://earl-of-code.com
>
> _______________________________________________
> Ironpython-users mailing list
> Ironpython-users at python.org
> https://mail.python.org/mailman/listinfo/ironpython-users
>


More information about the Ironpython-users mailing list