Unable to sync database in Django - django

I'm trying to create my first web application using Django.
I'm following the instructions given in the official Django documentation. (The first tutorial: https://docs.djangoproject.com/en/1.5/intro/tutorial01/)
The server started successfully, but when I run the following command (from command prompt):
python manage.py syncdb
I'm getting the following error
ORA-12560: TNS: protocol adapter error
I'm able to access Oracle homepage by going to 127.0.0.1:8080/apex/
I have Oracle 10g database express edition installed on my system, along with the Oracle instant client. After doing a Google search for the above error code, I've been presented with a variety of solutions — about adding ORACLE_HOME in environment variables and pointing that to
E:\oraclexe\app\oracle\product\10.2.0\server\bin;
But that doesn't fix the issue.
I have also added
E:\instantclient;E:\oraclexe\app\oracle\product\10.2.0\server;
to the PATH variable.
I have Python 2.7 installed along with cx_Oracle. I have successfully checked the installation of cx_Oracle by importing it in python. Some of the solutions speak about an ORACLE_SID. I'm unable to find that.
As you can see, I'm a complete newbie to stackoverflow and programming. It's really discouraging to come across such a problem in my very first program. So please help me solve this issue.

To use SQLite3, you just need to modify your settings.py DATABASES field to something like this:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
'NAME': '/path/to/mysite/database.db', # Or path to database file if using sqlite3.
# The following settings are not used with sqlite3:
'USER': '',
'PASSWORD': '',
'HOST': '', # Empty for localhost through domain sockets or '127.0.0.1' for localhost through TCP.
'PORT': '', # Set to empty string for default.
}
}

Yo do not need to download SQLite explicitly. Django has inbuilt SQLite3 database engine.

Related

My django project is missing a lot of defaults and installed packages are not working

When I make my django app there is typically a default sqlite3 that comes with it but for some reason it does not show up so I created a database in the MySQL workbench and then in my settings.py I made sure to add the relevant info.
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'nameofDB',
'USER': 'root',
'PASSWORD': 'mypassword',
'HOST': 'localhost',
'PORT': '3306',
}
}
In my virtual environment 'env' after activating it I made sure to install everything django, django-admin, pip. The name of my project is 'studybud'
and the directory is:
C:\Users\User\Desktop\studybud
After making my project, I worked on it for a little and checked how the html was rendered so it was activted and I ran the server but after I left it alone for a while my powershell froze so i simply exited out of everything. Not sure if this affects my current problem.
I tried opening my project again but now I get this error:
in my virtual environment i did make sure to install mysqlclient before creating the mysql database but as you see its installed in a completely different directory which is the global one. although i would have thought the python packages i have in my global path would make it work though clearly the error says module for mysqlclient not found.
I literally followed every step of a tutorial and for some reason it still does not work and I dont know why.

Django sphinx documentation does not read environment variables in settings file

I want to document my cookiecutter django project with sphinx. The problem is that when running make html sphinx gives me problems reading the config file. It says django.core.exceptions.ImproperlyConfigured: Set the USE_DOCKER environment variable
When not calling django.setup() it also throws me an error with my envs: django.core.exceptions.ImproperlyConfigured: Set the POSTGRES_DB environment variable When I hardcode them, the error goes on to complain about the next environment variable. I can't hardcode them all into the config file, that is not an option.
My environment variables are properly configured. When I print them out running my localhost they are there. It seems that somehow sphinx cannot process them. I am also using docker, so maybe that could interfere but I don't know. Here are parts of my sphinx config:
sys.path.insert(0, os.path.abspath('..'))
os.environ['DJANGO_SETTINGS_MODULE'] = 'config.settings.local'
Here are parts of my local settings:
# ------------------------------------------------------------------------------
# https://django-extensions.readthedocs.io/en/latest/installation_instructions.html#configuration
INSTALLED_APPS += ['django_extensions'] # noqa F405
# https://docs.djangoproject.com/en/dev/ref/settings/#databases
DATABASES = {
# 'default': env.db('DATABASE_URL'), # This was the default value, but modification below seemed necessary
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': env("POSTGRES_DB"),
'USER': env("POSTGRES_USER"),
'PASSWORD': env("POSTGRES_PASSWORD"),
'HOST': env("POSTGRES_HOST"),
'PORT': env("POSTGRES_PORT"),
}
}
Grateful for any kind of help. Thanks in advance!
So it turned out that apparantly some applications can't use environ to read from settings from file. Another problem was that docker alpine image doesn't come with make pre installed.
I got it to work by installing make in my docker image (apk add make) and building the doc while spinning up the container with docker-compose -f local.yml run django make -C ./docs html. Thanks goes out to uzi0espil for leading me there.
For more information see:
https://github.com/pydanny/cookiecutter-django/issues/1747
https://github.com/cookiecutter/cookiecutter/issues/1251
I had this same issue, related to the RTD build passing, but not rendering the whole thing properly.
Issue
My code had:
os.environ['MY_ENV_VAR']
The RTD build would pass, but not render any autodoc elements. The imports failed due to not being able to identify the key of ['MY_ENV_VAR'], raising a KeyError(key).
This error can be found by viewing the RAW output of build logs at your RTD account homepage under 'Builds'.
Solution
To resolve this, you can add the required environment keys ("POSTGRES_DB" for example), in your RTD account at Admin/Environment Variables. Here you can add the required keys, and in my experience, you can add nonsense values for the value. The RTD build will now fully pass as it can identify the Key(s) that you passed when calling os.environ[].

Django Web App on Azure, does not pull remote sqlite3 database

I have a django web app up and running with Azure. Now, when there are changes in the remote database, I cannot pull it so that it is local (It doesn't detect any changes even though the sqlite3 file is included in the project and the commits). And if I try to sync or push, the remote database gets reset/overwritten with my local database. I cannot simply do the git ignore trick because I need to push the database after I created new models (I'm assuming the remote database does not have my local migrations) Does anyone know how to fix this issue? Here are my database settings in the settings.py file:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': path.join(PROJECT_ROOT, 'db.sqlite3'),
'USER': '',
'PASSWORD': '',
'HOST': '',
'PORT': '',
}
}
My git ignore file:
# Python cache
__pycache__/
*.pyc
# PTVS analysis
.ptvs/
# Build results
/bin/
/obj/
# User-specific files
*.suo
*.user
*.sln.docstates
# Auto-generated virtual environment
/env/
# Auto-generated web.config
/web.config
# Auto-collected static files folder
/static/
# Windows image file caches
Thumbs.db
ehthumbs.db
# Folder config file
Desktop.ini
# Recycle Bin used on file shares
$RECYCLE.BIN/
# Mac desktop service store files
.DS_Store
This is surely a very bad idea. Your remote database will surely be updated all the time, with live data created by the users of your website. Why would you want to override that with stale data from dev?
And this:
I'm assuming the remote database does not have my local migrations
is not only false, it's quite literally missing the whole point of migrations, which is that you run the same code in dev and prod to keep the tables in sync.
Finally, sqlite isn't really suitable for production use in anything but a toy site. Use a proper db like Postgres.

Django unable to open database file using mysql

I'm a newbie in django so as python
I just succesfully configured my first django site over an apache server, then I configured it to work with mysql database editing the settings.py file and running the following command
python manage.py syncdb
I started playing a bit with the admin but occasionally when making get or post requests I get the following message OperationalError at "/some/route" unable to open database file
If I refresh the page loads fine, but if i keep refreshing any page in the admin the error shows up, so it's a random thing.
For what I've searched this is an issue related with sqlite, but I'm using mysql.
My database config in settings.py is the following:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'simulation',
'USER': 'root',
'PASSWORD': 'root',
'HOST': ''
}
}
I tried to specify hosts "localhost" and "127.0.0.1" but the result was the same.
It's really important for me find a solution that uses mysql as database engine.
Any help would be really appreciated! Thanks.
I've encountered a similar problem that you have right here, in my instance it seemed like my settings.py file was cached on the server. Once I deleted the .pyc files it started working fine.
Also, what happens if you change your database to sqlite? It might be worth checking that your mysql database isn't playing up instead of django.
I ran into the same problem with Django/Mysql/WSGI/Apache setup. Similar to Serakiel, I think that the problem stemmed from server caching. Restarting apache fixed the problem for me.

Getting DatabaseError, no such table with sqlite3

First time deploying a project. Getting DatabaseError when navigating to a view that modifies or creates Objects in the db. The error I get is:
DatabaseError at /uap_app/coach/request/
no such table: uap_app_coachrequest
with Traceback found here:
Suggestions include ensuring that settings.py reflects the full path for the db, which I have already done. Additionally, I have checked and ensured that all of the tables have been properly created by querying within the sqlite env. Tables initially created via manage.py sql uap_app and syncdb
in settings.py:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
'NAME': '/var/www/cscc/uap_prod_db2.sqlite3',
Please let me know if there is anything else I should add?
Setup: Django1.4, Python2.7, Apache2.2, mod_wsgi, sqlite3, CentOS
Got it! My machine had multiple python versions installed so I needed to ensure that it pointed to the python2.7 executable instead of the default system-wide installed python.
added this line to httpd.conf:
WSGIPythonExecutable \usr\local\bin\python2.7
got an error from apache saying Invalid command 'WSGIPythonExecutable'-- apparently used only for a previous version of mod_wsgi 1.x (as per this post)
so then i tried adding this line to httpd.conf:
WSGIPythonExecutable \usr\local
and voila! It worked!
Thanks to unsorted for additional help